diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/c-decl.c | 9 | ||||
-rw-r--r-- | gcc/c-parser.c | 7 | ||||
-rw-r--r-- | gcc/c-tree.h | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20011008-1.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20080820.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/cpp.exp | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/trad/trad.exp | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/fltconst-1.c | 26 | ||||
-rw-r--r-- | gcc/testsuite/lib/gcc-dg.exp | 13 | ||||
-rw-r--r-- | gcc/testsuite/lib/gcc.exp | 1 |
12 files changed, 64 insertions, 26 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d29b385..23783fd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-08-21 Aldy Hernandez <aldyh@redhat.com> + + * 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 <rguenther@suse.de> * 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 <rdsandiford@googlemail.com> * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 857e3f2..056cb38 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 7b7d869..e69b0a7 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 1fe3245..539254e 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 36ad31c..0aa749e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2008-08-21 Aldy Hernandez <aldyh@redhat.com> + + * 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 <joseph@codesourcery.com> * 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 e5c9e2c..e399147 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 0000000..b9dd8a7 --- /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 acf0898..1dc504e 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 190cfcf..22225e5 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 bf92227..85e1d34 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 8d308d4..1497ce3 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 286e125..5985ce0 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] |