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

📄 uninit-a.c

📁 linux下的gcc编译器
💻 C
字号:
/* Inspired by part of java/parse.y.   May be a real bug in CSE. *//* { dg-do compile } *//* { dg-options "-O2 -Wall" } */struct tree{    struct tree *car, *cdr, *wfl;    int code;    struct { unsigned int renp:1;      unsigned int rtnp:1;      unsigned int rpnp:1; } flags;};typedef struct tree *tree;#define NULL_TREE ((tree)0)/* Codes */enum{    CALL_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, CONVERT_EXPR,    ARRAY_REF, CONDITIONAL_EXPR, STRING_CST, EXPR_WITH_FILE_LOCATION};/* Flags */#define RESOLVE_EXPRESSION_NAME_P(t) ((t)->flags.renp)#define RESOLVE_TYPE_NAME_P(t) ((t)->flags.rtnp)#define RESOLVE_PACKAGE_NAME_P(t) ((t)->flags.rpnp)/* Macros */#define EXPR_WFL_QUALIFICATION(t) ((t)->wfl)#define QUAL_WFL(t) ((t)->wfl)#define EXPR_WFL_NODE(t) ((t)->wfl)#define TREE_CODE(t) ((t)->code)#define TREE_OPERAND(t,x) ((t)->car)#define CLASSTYPE_SUPER(t) ((t)->car)#define IDENTIFIER_LOCAL_VALUE(t) ((t)->car)#define TREE_CHAIN(t) ((t)->cdr)#define QUAL_RESOLUTION(t) ((t)->cdr)extern tree current_class, this_identifier_node;extern tree super_identifier_node, length_identifier_node;tree resolve_and_layout (tree, tree);tree lookup_field_wrapper (tree, tree);voidqualify_ambiguous_name (id)     tree id;{  tree qual, qual_wfl, decl;  tree name;	 /* { dg-bogus "name" "uninitialized variable warning" } */  tree ptr_type; /* { dg-bogus "ptr_type" "uninitialized variable warning" } */  int again, new_array_found = 0;  int super_found = 0, this_found = 0;  qual = EXPR_WFL_QUALIFICATION (id);  do {    qual_wfl = QUAL_WFL (qual);    switch (TREE_CODE (qual_wfl))      {      case CALL_EXPR:	qual_wfl = TREE_OPERAND (qual_wfl, 0);	if (TREE_CODE (qual_wfl) != EXPR_WITH_FILE_LOCATION)	  {	    qual = EXPR_WFL_QUALIFICATION (qual_wfl);	    qual_wfl = QUAL_WFL (qual);	  }	break;      case NEW_ARRAY_EXPR:	qual = TREE_CHAIN (qual);	new_array_found = again = 1;	continue;      case NEW_CLASS_EXPR:      case CONVERT_EXPR:	qual_wfl = TREE_OPERAND (qual_wfl, 0);	break;      case ARRAY_REF:	while (TREE_CODE (qual_wfl) == ARRAY_REF)	  qual_wfl = TREE_OPERAND (qual_wfl, 0);	break;      default:	break;      }    name = EXPR_WFL_NODE (qual_wfl);    ptr_type = current_class;    again = 0;  } while (again);  /* If you put straightforward uses of name and ptr_type here     instead of the if-else sequence below, the warnings go away.     Therefore I suspect a real bug. */    if (!this_found && !super_found && (decl = IDENTIFIER_LOCAL_VALUE (name)))    {      RESOLVE_EXPRESSION_NAME_P (qual_wfl) = 1;      QUAL_RESOLUTION (qual) = decl;    }  else if ((decl = lookup_field_wrapper (ptr_type, name))	   || (new_array_found && name == length_identifier_node))    {      RESOLVE_EXPRESSION_NAME_P (qual_wfl) = 1;      QUAL_RESOLUTION (qual) = (new_array_found ? NULL_TREE : decl);    }  else if ((decl = resolve_and_layout (name, NULL_TREE)))    {      RESOLVE_TYPE_NAME_P (qual_wfl) = 1;      QUAL_RESOLUTION (qual) = decl;    }  else if (TREE_CODE (QUAL_WFL (qual)) == CALL_EXPR	   || TREE_CODE (QUAL_WFL (qual)) == ARRAY_REF)    RESOLVE_EXPRESSION_NAME_P (qual_wfl) = 1;  else     RESOLVE_PACKAGE_NAME_P (qual_wfl) = 1;}

⌨️ 快捷键说明

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