Commit 3d10ed6c by Aldy Hernandez

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
parent eb5712c9
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> 2008-08-21 Richard Guenther <rguenther@suse.de>
* tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants. * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
...@@ -360,6 +367,7 @@ ...@@ -360,6 +367,7 @@
(compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
flag_profile_correction is set. flag_profile_correction is set.
>>>>>>> .r139386
2008-08-18 Richard Sandiford <rdsandiford@googlemail.com> 2008-08-18 Richard Sandiford <rdsandiford@googlemail.com>
* rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK. * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
......
...@@ -5363,12 +5363,15 @@ start_struct (enum tree_code code, tree name) ...@@ -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. WIDTH is non-NULL for bit-fields only, and is an INTEGER_CST node.
DECL_ATTRS is as for grokdeclarator. DECL_ATTRS is as for grokdeclarator.
LOC is the location of the structure component.
This is done during the parsing of the struct declaration. This is done during the parsing of the struct declaration.
The FIELD_DECL nodes are chained together and the lot of them The FIELD_DECL nodes are chained together and the lot of them
are ultimately passed to `build_struct' to make the RECORD_TYPE node. */ are ultimately passed to `build_struct' to make the RECORD_TYPE node. */
tree 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 width, tree *decl_attrs)
{ {
tree value; tree value;
...@@ -5414,10 +5417,10 @@ grokfield (struct c_declarator *declarator, struct c_declspecs *declspecs, ...@@ -5414,10 +5417,10 @@ grokfield (struct c_declarator *declarator, struct c_declspecs *declspecs,
} }
if (!ok) if (!ok)
{ {
pedwarn (input_location, 0, "declaration does not declare anything"); pedwarn (loc, 0, "declaration does not declare anything");
return NULL_TREE; 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, value = grokdeclarator (declarator, declspecs, FIELD, false,
......
...@@ -1960,7 +1960,9 @@ c_parser_struct_declaration (c_parser *parser) ...@@ -1960,7 +1960,9 @@ c_parser_struct_declaration (c_parser *parser)
structs or unions (which is [a] useful and [b] supports structs or unions (which is [a] useful and [b] supports
MS P-SDK). */ MS P-SDK). */
tree attrs = NULL; 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); NULL_TREE, &attrs);
if (ret) if (ret)
decl_attributes (&ret, attrs, 0); decl_attributes (&ret, attrs, 0);
...@@ -2003,7 +2005,8 @@ c_parser_struct_declaration (c_parser *parser) ...@@ -2003,7 +2005,8 @@ c_parser_struct_declaration (c_parser *parser)
} }
if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE))
postfix_attrs = c_parser_attributes (parser); 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, decl_attributes (&d, chainon (postfix_attrs,
all_prefix_attrs), 0); all_prefix_attrs), 0);
TREE_CHAIN (d) = decls; TREE_CHAIN (d) = decls;
......
...@@ -475,8 +475,8 @@ extern tree finish_enum (tree, tree, tree); ...@@ -475,8 +475,8 @@ extern tree finish_enum (tree, tree, tree);
extern void finish_function (void); extern void finish_function (void);
extern tree finish_struct (tree, tree, tree); extern tree finish_struct (tree, tree, tree);
extern struct c_arg_info *get_parm_info (bool); extern struct c_arg_info *get_parm_info (bool);
extern tree grokfield (struct c_declarator *, struct c_declspecs *, extern tree grokfield (location_t, struct c_declarator *,
tree, tree *); struct c_declspecs *, tree, tree *);
extern tree groktypename (struct c_type_name *); extern tree groktypename (struct c_type_name *);
extern tree grokparm (const struct c_parm *); extern tree grokparm (const struct c_parm *);
extern tree implicitly_declare (tree); extern tree implicitly_declare (tree);
......
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> 2008-08-21 Joseph Myers <joseph@codesourcery.com>
* g++.dg/opt/anchor1.C (foo): Return the return value of * g++.dg/opt/anchor1.C (foo): Return the return value of
......
/* { dg-do compile } */ /* { 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 { union {int x;}; int q; } b;
struct { struct {int x;}; int q; } c; struct { struct {int x;}; int q; } c;
union { union {int x;}; int q; } d; union { union {int x;}; int q; } d;
......
/* { 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" } */
...@@ -37,7 +37,7 @@ dg-init ...@@ -37,7 +37,7 @@ dg-init
# Main loop. # Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,S} ]] \ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,S} ]] \
"" $DEFAULT_CFLAGS "-fno-show-column" $DEFAULT_CFLAGS
# All done. # All done.
dg-finish dg-finish
...@@ -37,7 +37,7 @@ dg-init ...@@ -37,7 +37,7 @@ dg-init
# Main loop. # Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
"" $DEFAULT_TRADCPPFLAGS "-fno-show-column" $DEFAULT_TRADCPPFLAGS
# All done. # All done.
dg-finish dg-finish
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-std=gnu99" } */ /* { dg-options "-std=gnu99" } */
double a = 1.ld; /* { dg-error "invalid suffix" } */ double a = 1.ld; /* { dg-error "12:invalid suffix" } */
double b = 1.fd; /* { dg-error "invalid suffix" } */ double b = 1.fd; /* { dg-error "12:invalid suffix" } */
double c = 1.di; /* { dg-error "invalid suffix" } */ double c = 1.di; /* { dg-error "12:invalid suffix" } */
double d = 1.dj; /* { dg-error "invalid suffix" } */ double d = 1.dj; /* { dg-error "12:invalid suffix" } */
double e = 1.id; /* { dg-error "invalid suffix" } */ double e = 1.id; /* { dg-error "12:invalid suffix" } */
double f = 1.jd; /* { dg-error "invalid suffix" } */ double f = 1.jd; /* { dg-error "12:invalid suffix" } */
double g = 1.ddd; /* { dg-error "invalid suffix" } */ double g = 1.ddd; /* { dg-error "12:invalid suffix" } */
double h = 1.ldd; /* { dg-error "invalid suffix" } */ double h = 1.ldd; /* { dg-error "12:invalid suffix" } */
double i = 1.dld; /* { dg-error "invalid suffix" } */ double i = 1.dld; /* { dg-error "12:invalid suffix" } */
double j = 1.ddl; /* { dg-error "invalid suffix" } */ double j = 1.ddl; /* { dg-error "12:invalid suffix" } */
double k = 1.fdd; /* { dg-error "invalid suffix" } */ double k = 1.fdd; /* { dg-error "12:invalid suffix" } */
double l = 1.dfd; /* { dg-error "invalid suffix" } */ double l = 1.dfd; /* { dg-error "12:invalid suffix" } */
double m = 1.ddf; /* { dg-error "invalid suffix" } */ double m = 1.ddf; /* { dg-error "12:invalid suffix" } */
...@@ -636,7 +636,18 @@ proc process-message { msgproc msgprefix dgargs } { ...@@ -636,7 +636,18 @@ proc process-message { msgproc msgprefix dgargs } {
# it match a single line. # it match a single line.
set newentry [lindex ${dg-messages} end] set newentry [lindex ${dg-messages} end]
set expmsg [lindex $newentry 2] 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 newentry [lreplace $newentry 2 2 $expmsg]
set dg-messages [lreplace ${dg-messages} end end $newentry] set dg-messages [lreplace ${dg-messages} end end $newentry]
verbose "process-message:\n${dg-messages}" 2 verbose "process-message:\n${dg-messages}" 2
......
...@@ -150,7 +150,6 @@ proc gcc_target_compile { source dest type options } { ...@@ -150,7 +150,6 @@ proc gcc_target_compile { source dest type options } {
if [target_info exists gcc,timeout] { if [target_info exists gcc,timeout] {
lappend options "timeout=[target_info gcc,timeout]" lappend options "timeout=[target_info gcc,timeout]"
} }
lappend options "additional_flags=-fno-show-column"
lappend options "compiler=$GCC_UNDER_TEST" lappend options "compiler=$GCC_UNDER_TEST"
set options [dg-additional-files-options $options $source] set options [dg-additional-files-options $options $source]
return [target_compile $source $dest $type $options] return [target_compile $source $dest $type $options]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment