Support SSA name declarations with pointer type
authorRichard Biener <rguenther@suse.de>
Wed, 23 Feb 2022 10:05:50 +0000 (11:05 +0100)
committerRichard Biener <rguenther@suse.de>
Wed, 23 Feb 2022 11:15:30 +0000 (12:15 +0100)
commitf4ed267fa5b82d6dafbc8afc82baf45bfcae549c
tree54be74e6d0c9f7ad42ba5bde1aaf5605e3ec37f9
parent6e80c4f1ad9046b0a7c105660cc7b3dcae0fdb8f
Support SSA name declarations with pointer type

Currently we fail to parse

  int * _3;

as SSA name and instead get a VAR_DECL because of the way the C
frontends declarator specs work.  That causes havoc if those
supposed SSA names are used in PHIs or in other places where
VAR_DECLs are not allowed.  The following fixes the pointer case
in an ad-hoc way - for more complex type declarators we probably
have to find a way to re-use the C frontend grokdeclarator without
actually creating a VAR_DECL there (or maybe make it create an
SSA name).

Pointers appear too often to be neglected though, thus the following
ad-hoc fix for this.  This also adds verification that we do not
end up with SSA names without definitions as can happen when
reducing a GIMPLE testcase.  Instead of working through segfaults
one-by-one we emit errors for all of those at once now.

2022-02-23  Richard Biener  <rguenther@suse.de>

gcc/c
* gimple-parser.cc (c_parser_parse_gimple_body): Diagnose
SSA names without definition.
(c_parser_gimple_declaration): Handle pointer typed SSA names.

gcc/testsuite/
* gcc.dg/gimplefe-49.c: New testcase.
* gcc.dg/gimplefe-error-13.c: Likewise.
gcc/c/gimple-parser.cc
gcc/testsuite/gcc.dg/gimplefe-49.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/gimplefe-error-13.c [new file with mode: 0644]