diff options
author | Jan Hubicka <jh@suse.cz> | 2020-10-02 15:56:12 +0200 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2020-10-02 15:56:12 +0200 |
commit | 762cca0023c9bdbd762c44f33a954845bbccd568 (patch) | |
tree | 3850ad6516b7ef5ae3d17d8c5116904c73a9a629 /gcc/tree-ssa-alias.c | |
parent | 1d3e12c469e5f5627c2e271232e1a3d8a88783be (diff) | |
download | gcc-762cca0023c9bdbd762c44f33a954845bbccd568.zip gcc-762cca0023c9bdbd762c44f33a954845bbccd568.tar.gz gcc-762cca0023c9bdbd762c44f33a954845bbccd568.tar.bz2 |
Perforate fnspec strings
gcc/ChangeLog:
2020-10-02 Jan Hubicka <hubicka@ucw.cz>
* attr-fnspec.h: Update documentation.
(attr_fnsec::return_desc_size): Set to 2
(attr_fnsec::arg_desc_size): Set to 2
* builtin-attrs.def (STR1): Update fnspec.
* internal-fn.def (UBSAN_NULL): Update fnspec.
(UBSAN_VPTR): Update fnspec.
(UBSAN_PTR): Update fnspec.
(ASAN_CHECK): Update fnspec.
(GOACC_DIM_SIZE): Remove fnspec.
(GOACC_DIM_POS): Remove fnspec.
* tree-ssa-alias.c (attr_fnspec::verify): Update verification.
gcc/fortran/ChangeLog:
2020-10-02 Jan Hubicka <hubicka@ucw.cz>
* trans-decl.c (gfc_build_library_function_decl_with_spec): Verify
fnspec.
(gfc_build_intrinsic_function_decls): Update fnspecs.
(gfc_build_builtin_function_decls): Update fnspecs.
* trans-io.c (gfc_build_io_library_fndecls): Update fnspecs.
* trans-types.c (create_fn_spec): Update fnspecs.
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); } |