From: Aldy Hernandez Date: Thu, 21 Aug 2008 17:50:01 +0000 (+0000) Subject: c-tree.h (grokfield): New argument. X-Git-Tag: releases/gcc-4.4.0~2977 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d10ed6cbc7248d756077c1e7dc3533257c44a4f;p=thirdparty%2Fgcc.git c-tree.h (grokfield): New argument. * c-tree.h (grokfield): New argument. * c-decl.c (grokfield): Handle new location argument. * c-parser.c (c_parser_struct_declaration): Pass location to grokfield. testsuite/ * gcc.dg/20011008-1.c: Test column. * gcc.dg/20080820.c: New. * gcc.dg/fltconst-1.c: Test column. * gcc.dg/cpp/cpp.exp: Add -fno-show-column. * gcc.dg/cpp/trad/trad.exp: Same. * lib/gcc.exp (gcc_target_compile): Remove -fno-show-column. * lib/gcc-dg.exp (process-message): Handle columns. From-SVN: r139403 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d29b385e39a4..23783fd2dabf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-08-21 Aldy Hernandez + + * c-tree.h (grokfield): New argument. + * c-decl.c (grokfield): Handle new location argument. + * c-parser.c (c_parser_struct_declaration): Pass location to + grokfield. + 2008-08-21 Richard Guenther * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants. @@ -360,6 +367,7 @@ (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if flag_profile_correction is set. +>>>>>>> .r139386 2008-08-18 Richard Sandiford * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 857e3f25d9e4..056cb3860584 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -5363,12 +5363,15 @@ start_struct (enum tree_code code, tree name) WIDTH is non-NULL for bit-fields only, and is an INTEGER_CST node. DECL_ATTRS is as for grokdeclarator. + LOC is the location of the structure component. + This is done during the parsing of the struct declaration. The FIELD_DECL nodes are chained together and the lot of them are ultimately passed to `build_struct' to make the RECORD_TYPE node. */ tree -grokfield (struct c_declarator *declarator, struct c_declspecs *declspecs, +grokfield (location_t loc, + struct c_declarator *declarator, struct c_declspecs *declspecs, tree width, tree *decl_attrs) { tree value; @@ -5414,10 +5417,10 @@ grokfield (struct c_declarator *declarator, struct c_declspecs *declspecs, } if (!ok) { - pedwarn (input_location, 0, "declaration does not declare anything"); + pedwarn (loc, 0, "declaration does not declare anything"); return NULL_TREE; } - pedwarn (input_location, OPT_pedantic, "ISO C doesn%'t support unnamed structs/unions"); + pedwarn (loc, OPT_pedantic, "ISO C doesn%'t support unnamed structs/unions"); } value = grokdeclarator (declarator, declspecs, FIELD, false, diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 7b7d86933320..e69b0a738694 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -1960,7 +1960,9 @@ c_parser_struct_declaration (c_parser *parser) structs or unions (which is [a] useful and [b] supports MS P-SDK). */ tree attrs = NULL; - ret = grokfield (build_id_declarator (NULL_TREE), specs, + + ret = grokfield (c_parser_peek_token (parser)->location, + build_id_declarator (NULL_TREE), specs, NULL_TREE, &attrs); if (ret) decl_attributes (&ret, attrs, 0); @@ -2003,7 +2005,8 @@ c_parser_struct_declaration (c_parser *parser) } if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) postfix_attrs = c_parser_attributes (parser); - d = grokfield (declarator, specs, width, &all_prefix_attrs); + d = grokfield (c_parser_peek_token (parser)->location, + declarator, specs, width, &all_prefix_attrs); decl_attributes (&d, chainon (postfix_attrs, all_prefix_attrs), 0); TREE_CHAIN (d) = decls; diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 1fe324544f33..539254ec8f98 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -475,8 +475,8 @@ extern tree finish_enum (tree, tree, tree); extern void finish_function (void); extern tree finish_struct (tree, tree, tree); extern struct c_arg_info *get_parm_info (bool); -extern tree grokfield (struct c_declarator *, struct c_declspecs *, - tree, tree *); +extern tree grokfield (location_t, struct c_declarator *, + struct c_declspecs *, tree, tree *); extern tree groktypename (struct c_type_name *); extern tree grokparm (const struct c_parm *); extern tree implicitly_declare (tree); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 36ad31cb905b..0aa749ee35f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2008-08-21 Aldy Hernandez + + * gcc.dg/20011008-1.c: Test column. + * gcc.dg/20080820.c: New. + * gcc.dg/fltconst-1.c: Test column. + * gcc.dg/cpp/cpp.exp: Add -fno-show-column. + * gcc.dg/cpp/trad/trad.exp: Same. + * lib/gcc.exp (gcc_target_compile): Remove -fno-show-column. + * lib/gcc-dg.exp (process-message): Handle columns. + 2008-08-21 Joseph Myers * g++.dg/opt/anchor1.C (foo): Return the return value of diff --git a/gcc/testsuite/gcc.dg/20011008-1.c b/gcc/testsuite/gcc.dg/20011008-1.c index e5c9e2cf0ee0..e3991471a9f5 100644 --- a/gcc/testsuite/gcc.dg/20011008-1.c +++ b/gcc/testsuite/gcc.dg/20011008-1.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ -/* { dg-options "-O0" } */ +/* { dg-options "-O0 -fshow-column" } */ -struct { int; int q; } a; /* { dg-warning "does not declare anything" } */ +struct { int; int q; } a; /* { dg-warning "13:does not declare anything" } */ struct { union {int x;}; int q; } b; struct { struct {int x;}; int q; } c; union { union {int x;}; int q; } d; diff --git a/gcc/testsuite/gcc.dg/20080820.c b/gcc/testsuite/gcc.dg/20080820.c new file mode 100644 index 000000000000..b9dd8a7c8970 --- /dev/null +++ b/gcc/testsuite/gcc.dg/20080820.c @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "-fshow-column -fms-extensions -pedantic" } */ + +struct { struct a { int x; }; int bar; } hot; /* { dg-warning "29:ISO C doesn't support unnamed" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/cpp.exp b/gcc/testsuite/gcc.dg/cpp/cpp.exp index acf0898407b5..1dc504e30ba8 100644 --- a/gcc/testsuite/gcc.dg/cpp/cpp.exp +++ b/gcc/testsuite/gcc.dg/cpp/cpp.exp @@ -37,7 +37,7 @@ dg-init # Main loop. dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,S} ]] \ - "" $DEFAULT_CFLAGS + "-fno-show-column" $DEFAULT_CFLAGS # All done. dg-finish diff --git a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp index 190cfcfdee65..22225e519150 100644 --- a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp +++ b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp @@ -37,7 +37,7 @@ dg-init # Main loop. dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ - "" $DEFAULT_TRADCPPFLAGS + "-fno-show-column" $DEFAULT_TRADCPPFLAGS # All done. dg-finish diff --git a/gcc/testsuite/gcc.dg/fltconst-1.c b/gcc/testsuite/gcc.dg/fltconst-1.c index bf9222706444..85e1d34a5834 100644 --- a/gcc/testsuite/gcc.dg/fltconst-1.c +++ b/gcc/testsuite/gcc.dg/fltconst-1.c @@ -1,16 +1,16 @@ /* { dg-do compile } */ /* { dg-options "-std=gnu99" } */ -double a = 1.ld; /* { dg-error "invalid suffix" } */ -double b = 1.fd; /* { dg-error "invalid suffix" } */ -double c = 1.di; /* { dg-error "invalid suffix" } */ -double d = 1.dj; /* { dg-error "invalid suffix" } */ -double e = 1.id; /* { dg-error "invalid suffix" } */ -double f = 1.jd; /* { dg-error "invalid suffix" } */ -double g = 1.ddd; /* { dg-error "invalid suffix" } */ -double h = 1.ldd; /* { dg-error "invalid suffix" } */ -double i = 1.dld; /* { dg-error "invalid suffix" } */ -double j = 1.ddl; /* { dg-error "invalid suffix" } */ -double k = 1.fdd; /* { dg-error "invalid suffix" } */ -double l = 1.dfd; /* { dg-error "invalid suffix" } */ -double m = 1.ddf; /* { dg-error "invalid suffix" } */ +double a = 1.ld; /* { dg-error "12:invalid suffix" } */ +double b = 1.fd; /* { dg-error "12:invalid suffix" } */ +double c = 1.di; /* { dg-error "12:invalid suffix" } */ +double d = 1.dj; /* { dg-error "12:invalid suffix" } */ +double e = 1.id; /* { dg-error "12:invalid suffix" } */ +double f = 1.jd; /* { dg-error "12:invalid suffix" } */ +double g = 1.ddd; /* { dg-error "12:invalid suffix" } */ +double h = 1.ldd; /* { dg-error "12:invalid suffix" } */ +double i = 1.dld; /* { dg-error "12:invalid suffix" } */ +double j = 1.ddl; /* { dg-error "12:invalid suffix" } */ +double k = 1.fdd; /* { dg-error "12:invalid suffix" } */ +double l = 1.dfd; /* { dg-error "12:invalid suffix" } */ +double m = 1.ddf; /* { dg-error "12:invalid suffix" } */ diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index 8d308d424615..1497ce38ed97 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -636,7 +636,18 @@ proc process-message { msgproc msgprefix dgargs } { # it match a single line. set newentry [lindex ${dg-messages} end] set expmsg [lindex $newentry 2] - set expmsg "$msgprefix\[^\n]*$expmsg" + + # If we have a column... + if [regexp "^(\[0-9\]+):" $expmsg "" column] { + # Remove "COLUMN:" + regsub "^\[0-9\]+:" $expmsg "" expmsg + + # Include the column in the search expression. + set expmsg "$column: $msgprefix\[^\n]*$expmsg" + } else { + set expmsg "$msgprefix\[^\n]*$expmsg" + } + set newentry [lreplace $newentry 2 2 $expmsg] set dg-messages [lreplace ${dg-messages} end end $newentry] verbose "process-message:\n${dg-messages}" 2 diff --git a/gcc/testsuite/lib/gcc.exp b/gcc/testsuite/lib/gcc.exp index 286e1259f56e..5985ce061d7b 100644 --- a/gcc/testsuite/lib/gcc.exp +++ b/gcc/testsuite/lib/gcc.exp @@ -150,7 +150,6 @@ proc gcc_target_compile { source dest type options } { if [target_info exists gcc,timeout] { lappend options "timeout=[target_info gcc,timeout]" } - lappend options "additional_flags=-fno-show-column" lappend options "compiler=$GCC_UNDER_TEST" set options [dg-additional-files-options $options $source] return [target_compile $source $dest $type $options]