]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
GIMPLEFE: Handle invalid SSA names
authorMikhail Maltsev <maltsevm@gmail.com>
Thu, 11 May 2017 12:27:37 +0000 (12:27 +0000)
committerMikhail Maltsev <miyuki@gcc.gnu.org>
Thu, 11 May 2017 12:27:37 +0000 (12:27 +0000)
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

gcc/c/ChangeLog
gcc/c/gimple-parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gimplefe-error-6.c [new file with mode: 0644]

index 3bf4db20b9b08752e9ec25893ee716f6d7921122..69b1ac30813b58f310feaa702997883c7c9d7bad 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-11  Mikhail Maltsev  <maltsevm@gmail.com>
+
+       PR testsuite/80580
+       * gimple-parser.c (c_parser_parse_ssa_name): Validate SSA name base.
+
 2017-05-11  Mikhail Maltsev  <maltsevm@gmail.com>
 
        PR testsuite/80580
index c0858b709aacb4b80440ad5790a96ecd551874a7..ed9e7c55f0ad106407bf6d1bffc09179359bc149 100644 (file)
@@ -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;
index 393d8803e8feb0d4bce4787dc454e4617d222edc..2b5f6aca06704d4d4d47af0af5555e06ca36adf0 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-11  Mikhail Maltsev  <maltsevm@gmail.com>
+
+       PR testsuite/80580
+       * gcc.dg/gimplefe-error-6.c: New test.
+
 2017-05-11  Mikhail Maltsev  <maltsevm@gmail.com>
 
        PR testsuite/80580
diff --git a/gcc/testsuite/gcc.dg/gimplefe-error-6.c b/gcc/testsuite/gcc.dg/gimplefe-error-6.c
new file mode 100644 (file)
index 0000000..c73b85c
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-fgimple" } */
+
+void a(int);
+
+__GIMPLE() void b()
+{
+  a_2 = 0; /* { dg-error "invalid" } */
+}