aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2018-12-24 12:21:25 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2018-12-24 11:21:25 +0000
commit77e9f49535e298fb326cf0ebc208636d1dcf3f37 (patch)
tree49e6e270aae37f99742aded9def0bba2205a2e23
parentd840d7a2bbbfd97d054baa7462ada09215d93974 (diff)
downloadgcc-77e9f49535e298fb326cf0ebc208636d1dcf3f37.zip
gcc-77e9f49535e298fb326cf0ebc208636d1dcf3f37.tar.gz
gcc-77e9f49535e298fb326cf0ebc208636d1dcf3f37.tar.bz2
tree.c (fld_simplified_type): Temporarily disable array simplification.
* tree.c (fld_simplified_type): Temporarily disable array simplification. * gcc.c-torture/pr88140.c: New testcase. From-SVN: r267398
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/pr88140.c19
-rw-r--r--gcc/tree.c3
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 77631ac..dce70c8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,10 @@
2018-12-24 Jan Hubicka <hubicka@ucw.cz>
+
+ PR lto/88140
+ * tree.c (fld_simplified_type): Temporarily disable array
+ simplification.
+
+2018-12-24 Jan Hubicka <hubicka@ucw.cz>
* lto-symtab.c (lto_symtab_merge_decls_2): Do not report ODR violations
for method whose basetype was already reported.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 933b716..6cd73cc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-12-24 Jan Hubicka <hubicka@ucw.cz>
+
+ PR lto/88140
+ * gcc.c-torture/pr88140.c: New testcase.
+
2018-12-24 Iain Sandoe <iain@sandoe.co.uk>
PR testsuite/67974
diff --git a/gcc/testsuite/gcc.c-torture/pr88140.c b/gcc/testsuite/gcc.c-torture/pr88140.c
new file mode 100644
index 0000000..a08c2cb
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/pr88140.c
@@ -0,0 +1,19 @@
+typedef struct {
+} a;
+
+typedef struct {
+ a *b[0];
+} c;
+
+void d() { ((c *)0)->b[0] = 0; }
+
+typedef struct {
+} a;
+
+typedef struct {
+ a *b[0];
+} c;
+
+void d() { ((c *)0)->b[0] = 0; }
+
+
diff --git a/gcc/tree.c b/gcc/tree.c
index c3d4bb8..5fd3be1 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -5372,7 +5372,8 @@ fld_simplified_type (tree t, struct free_lang_data_d *fld)
return t;
if (POINTER_TYPE_P (t))
return fld_incomplete_type_of (t, fld);
- if (TREE_CODE (t) == ARRAY_TYPE)
+ /* FIXME: This triggers verification error, see PR88140. */
+ if (TREE_CODE (t) == ARRAY_TYPE && 0)
return fld_process_array_type (t, fld_simplified_type (TREE_TYPE (t), fld),
fld_simplified_types, fld);
return t;