diff options
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r-- | gcc/tree-ssa-alias.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 52aeaeb..3d3a91c 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -4020,16 +4020,21 @@ walk_aliased_vdefs (ao_ref *ref, tree vdef, void attr_fnspec::verify () { - /* FIXME: Fortran trans-decl.c contains multiple wrong fnspec strings. - re-enable verification after these are fixed. */ - return; bool err = false; /* Check return value specifier. */ if (len < return_desc_size) err = true; + else if ((len - return_desc_size) % arg_desc_size) + err = true; else if ((str[0] < '1' || str[0] > '4') - && str[0] != '.' && str[0] != 'm') + && str[0] != '.' && str[0] != 'm' + /* FIXME: Fortran trans-decl.c contains multiple wrong fnspec + strings. The following characters have no meaning. */ + && str[0] != 'R' && str[0] != 'W') + err = true; + + if (str[1] != ' ') err = true; /* Now check all parameters. */ @@ -4049,7 +4054,9 @@ attr_fnspec::verify () default: err = true; } + if (str[idx + 1] != ' ') + err = true; } if (err) - internal_error ("invalid fn spec attribute %s", str); + internal_error ("invalid fn spec attribute \"%s\"", str); } |