diff options
author | Mikhail Maltsev <maltsevm@gmail.com> | 2017-05-11 10:48:54 +0000 |
---|---|---|
committer | Mikhail Maltsev <miyuki@gcc.gnu.org> | 2017-05-11 10:48:54 +0000 |
commit | ac4eb40f5c7069b39eb847a136a1f690bb5444b2 (patch) | |
tree | 687a6b8fa77af9a3f5204970e4f31022e4c4b299 /gcc/c/gimple-parser.c | |
parent | ab9e91f9fcc9f7b0b8d848f1ba698bc46ce70922 (diff) | |
download | gcc-ac4eb40f5c7069b39eb847a136a1f690bb5444b2.zip gcc-ac4eb40f5c7069b39eb847a136a1f690bb5444b2.tar.gz gcc-ac4eb40f5c7069b39eb847a136a1f690bb5444b2.tar.bz2 |
GIMPLEFE: Handle invalid unary "*" operand type
gcc/c/
PR testsuite/80580
* gimple-parser.c (c_parser_gimple_unary_expression): Check argument
type of unary '*'.
gcc/testsuite/
PR testsuite/80580
* gcc.dg/gimplefe-error-4.c: New test.
From-SVN: r247899
Diffstat (limited to 'gcc/c/gimple-parser.c')
-rw-r--r-- | gcc/c/gimple-parser.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c index 0d6384b..c6c2f7a 100644 --- a/gcc/c/gimple-parser.c +++ b/gcc/c/gimple-parser.c @@ -567,6 +567,11 @@ c_parser_gimple_unary_expression (c_parser *parser) op = c_parser_gimple_postfix_expression (parser); if (op.value == error_mark_node) return ret; + if (! POINTER_TYPE_P (TREE_TYPE (op.value))) + { + error_at (op_loc, "expected pointer as argument of unary %<*%>"); + return ret; + } finish = op.get_finish (); location_t combined_loc = make_location (op_loc, op_loc, finish); ret.value = build_simple_mem_ref_loc (combined_loc, op.value); |