⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st.c

📁 gcc-fortran,linux使用fortran的编译软件。很好用的。
💻 C
字号:
/* Build executable statement trees.   Copyright (C) 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.   Contributed by Andy VaughtThis file is part of GCC.GCC is free software; you can redistribute it and/or modify it underthe terms of the GNU General Public License as published by the FreeSoftware Foundation; either version 2, or (at your option) any laterversion.GCC is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public Licensefor more details.You should have received a copy of the GNU General Public Licensealong with GCC; see the file COPYING.  If not, write to the FreeSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA02110-1301, USA.  *//* Executable statements are strung together into a singly linked list   of code structures.  These structures are later translated into GCC   GENERIC tree structures and from there to executable code for a   target.  */#include "config.h"#include "system.h"#include "gfortran.h"gfc_code new_st;/* Zeroes out the new_st structure.  */voidgfc_clear_new_st (void){  memset (&new_st, '\0', sizeof (new_st));  new_st.op = EXEC_NOP;}/* Get a gfc_code structure.  */gfc_code *gfc_get_code (void){  gfc_code *c;  c = gfc_getmem (sizeof (gfc_code));  c->loc = gfc_current_locus;  return c;}/* Given some part of a gfc_code structure, append a set of code to   its tail, returning a pointer to the new tail.  */gfc_code *gfc_append_code (gfc_code * tail, gfc_code * new){  if (tail != NULL)    {      while (tail->next != NULL)	tail = tail->next;      tail->next = new;    }  while (new->next != NULL)    new = new->next;  return new;}/* Free a single code structure, but not the actual structure itself.  */voidgfc_free_statement (gfc_code * p){  if (p->expr)    gfc_free_expr (p->expr);  if (p->expr2)    gfc_free_expr (p->expr2);  switch (p->op)    {    case EXEC_NOP:    case EXEC_ASSIGN:    case EXEC_GOTO:    case EXEC_CYCLE:    case EXEC_RETURN:    case EXEC_IF:    case EXEC_PAUSE:    case EXEC_STOP:    case EXEC_EXIT:    case EXEC_WHERE:    case EXEC_IOLENGTH:    case EXEC_POINTER_ASSIGN:    case EXEC_DO_WHILE:    case EXEC_CONTINUE:    case EXEC_TRANSFER:    case EXEC_LABEL_ASSIGN:    case EXEC_ENTRY:    case EXEC_ARITHMETIC_IF:      break;    case EXEC_CALL:      gfc_free_actual_arglist (p->ext.actual);      break;    case EXEC_SELECT:      if (p->ext.case_list)	gfc_free_case_list (p->ext.case_list);      break;    case EXEC_DO:      gfc_free_iterator (p->ext.iterator, 1);      break;    case EXEC_ALLOCATE:    case EXEC_DEALLOCATE:      gfc_free_alloc_list (p->ext.alloc_list);      break;    case EXEC_OPEN:      gfc_free_open (p->ext.open);      break;    case EXEC_CLOSE:      gfc_free_close (p->ext.close);      break;    case EXEC_BACKSPACE:    case EXEC_ENDFILE:    case EXEC_REWIND:    case EXEC_FLUSH:      gfc_free_filepos (p->ext.filepos);      break;    case EXEC_INQUIRE:      gfc_free_inquire (p->ext.inquire);      break;    case EXEC_READ:    case EXEC_WRITE:      gfc_free_dt (p->ext.dt);      break;    case EXEC_DT_END:      /* The ext.dt member is a duplicate pointer and doesn't need to         be freed.  */      break;    case EXEC_FORALL:      gfc_free_forall_iterator (p->ext.forall_iterator);      break;    default:      gfc_internal_error ("gfc_free_statement(): Bad statement");    }}/* Free a code statement and all other code structures linked to it.  */voidgfc_free_statements (gfc_code * p){  gfc_code *q;  for (; p; p = q)    {      q = p->next;      if (p->block)	gfc_free_statements (p->block);      gfc_free_statement (p);      gfc_free (p);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -