aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/gimple-parser.c
diff options
context:
space:
mode:
authorMikhail Maltsev <maltsevm@gmail.com>2017-05-11 12:27:37 +0000
committerMikhail Maltsev <miyuki@gcc.gnu.org>2017-05-11 12:27:37 +0000
commitc587104e114652bea492bebbbc8373852578df69 (patch)
tree9214bd31fe82d143b0a670e59b7b32368d5cc9c2 /gcc/c/gimple-parser.c
parent056a17ee6ca8f0fcd318d0dfba18f277e05a3579 (diff)
downloadgcc-c587104e114652bea492bebbbc8373852578df69.zip
gcc-c587104e114652bea492bebbbc8373852578df69.tar.gz
gcc-c587104e114652bea492bebbbc8373852578df69.tar.bz2
GIMPLEFE: Handle invalid SSA names
gcc/testsuite/ PR testsuite/80580 * gcc.dg/gimplefe-error-6.c: New test. gcc/c/ PR testsuite/80580 * gimple-parser.c (c_parser_parse_ssa_name): Validate SSA name base. From-SVN: r247903
Diffstat (limited to 'gcc/c/gimple-parser.c')
-rw-r--r--gcc/c/gimple-parser.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c
index c0858b7..ed9e7c5 100644
--- a/gcc/c/gimple-parser.c
+++ b/gcc/c/gimple-parser.c
@@ -692,6 +692,13 @@ c_parser_parse_ssa_name (c_parser *parser,
c_parser_error (parser, "base variable or SSA name undeclared");
return error_mark_node;
}
+ if (!(VAR_P (parent)
+ || TREE_CODE (parent) == PARM_DECL
+ || TREE_CODE (parent) == RESULT_DECL))
+ {
+ error ("invalid base %qE for SSA name", parent);
+ return error_mark_node;
+ }
if (VECTOR_TYPE_P (TREE_TYPE (parent))
|| TREE_CODE (TREE_TYPE (parent)) == COMPLEX_TYPE)
DECL_GIMPLE_REG_P (parent) = 1;