re PR sanitizer/60535 (Link failure with -flto and -fsanitize=undefined)
authorJakub Jelinek <jakub@gcc.gnu.org>
Tue, 18 Mar 2014 14:56:23 +0000 (15:56 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 18 Mar 2014 14:56:23 +0000 (15:56 +0100)
PR sanitizer/60535
* ubsan.c (ubsan_type_descriptor, ubsan_create_data): Call
varpool_finalize_decl instead of rest_of_decl_compilation.
lto/
* lto-lang.c (lto_init): Add NAME_TYPE for int128_integer_type_node
and complex_{float,{,long_}double}_type_node.
testsuite/
* c-c++-common/ubsan/null-1.c: Don't skip if -flto.
* c-c++-common/ubsan/null-2.c: Likewise.
* c-c++-common/ubsan/null-3.c: Likewise.
* c-c++-common/ubsan/null-4.c: Likewise.
* c-c++-common/ubsan/null-5.c: Likewise.
* c-c++-common/ubsan/null-6.c: Likewise.
* c-c++-common/ubsan/null-7.c: Likewise.
* c-c++-common/ubsan/null-8.c: Likewise.
* c-c++-common/ubsan/null-9.c: Likewise.
* c-c++-common/ubsan/null-10.c: Likewise.
* c-c++-common/ubsan/null-11.c: Likewise.
* c-c++-common/ubsan/overflow-1.c: Likewise.
* c-c++-common/ubsan/overflow-2.c: Likewise.
* c-c++-common/ubsan/overflow-add-1.c: Likewise.
* c-c++-common/ubsan/overflow-add-2.c: Likewise.
* c-c++-common/ubsan/overflow-int128.c: Likewise.
* c-c++-common/ubsan/overflow-mul-1.c: Likewise.
* c-c++-common/ubsan/overflow-mul-2.c: Likewise.
* c-c++-common/ubsan/overflow-mul-3.c: Likewise.
* c-c++-common/ubsan/overflow-mul-4.c: Likewise.
* c-c++-common/ubsan/overflow-negate-1.c: Likewise.
* c-c++-common/ubsan/overflow-negate-2.c: Likewise.
* c-c++-common/ubsan/overflow-sub-1.c: Likewise.
* c-c++-common/ubsan/overflow-sub-2.c: Likewise.
* c-c++-common/ubsan/pr59333.c: Likewise.
* c-c++-common/ubsan/pr59503.c: Likewise.
* c-c++-common/ubsan/pr59667.c: Likewise.
* c-c++-common/ubsan/undefined-1.c: Likewise.
* g++.dg/ubsan/pr59250.C: Likewise.
* g++.dg/ubsan/pr59306.C: Likewise.

From-SVN: r208651

35 files changed:
gcc/ChangeLog
gcc/lto/ChangeLog
gcc/lto/lto-lang.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/ubsan/null-1.c
gcc/testsuite/c-c++-common/ubsan/null-10.c
gcc/testsuite/c-c++-common/ubsan/null-11.c
gcc/testsuite/c-c++-common/ubsan/null-2.c
gcc/testsuite/c-c++-common/ubsan/null-3.c
gcc/testsuite/c-c++-common/ubsan/null-4.c
gcc/testsuite/c-c++-common/ubsan/null-5.c
gcc/testsuite/c-c++-common/ubsan/null-6.c
gcc/testsuite/c-c++-common/ubsan/null-7.c
gcc/testsuite/c-c++-common/ubsan/null-8.c
gcc/testsuite/c-c++-common/ubsan/null-9.c
gcc/testsuite/c-c++-common/ubsan/overflow-1.c
gcc/testsuite/c-c++-common/ubsan/overflow-2.c
gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c
gcc/testsuite/c-c++-common/ubsan/overflow-int128.c
gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c
gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c
gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c
gcc/testsuite/c-c++-common/ubsan/overflow-mul-4.c
gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c
gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c
gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c
gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c
gcc/testsuite/c-c++-common/ubsan/pr59333.c
gcc/testsuite/c-c++-common/ubsan/pr59503.c
gcc/testsuite/c-c++-common/ubsan/pr59667.c
gcc/testsuite/c-c++-common/ubsan/undefined-1.c
gcc/testsuite/g++.dg/ubsan/pr59250.C
gcc/testsuite/g++.dg/ubsan/pr59306.C
gcc/ubsan.c

index 23c0b194a2e19c4f9ecf86f3c9bbfb4ad4b4eacc..6c11a5490848f50a95f55e68a4ec6eafdcc89d11 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/60535
+       * ubsan.c (ubsan_type_descriptor, ubsan_create_data): Call
+       varpool_finalize_decl instead of rest_of_decl_compilation.
+
 2014-03-18  Richard Biener  <rguenther@suse.de>
 
        * df-problems.c (df_rd_confluence_n): Avoid bitmap_copy
index 7a2940e16e303cc64ff685696f1c1cf8488992c3..11897cd99db0ca2b1ca9a73bfd0a7a7cc3b26aeb 100644 (file)
@@ -1,7 +1,13 @@
+2014-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/60535
+       * lto-lang.c (lto_init): Add NAME_TYPE for int128_integer_type_node
+       and complex_{float,{,long_}double}_type_node.
+
 2014-03-08  Paulo Matos  <paulo@matos-sorge.com>
 
-    * lto-lang.c (lto_init): Pass flag_short_double to
-    build_common_tree_nodes.
+       * lto-lang.c (lto_init): Pass flag_short_double to
+       build_common_tree_nodes.
 
 2014-02-14  Jan Hubicka  <hubicka@ucw.cz>
 
index f92e884e9e7451af64be95059095b4c1b7da5790..f60d2127b36f9a262c3efbf2a9be074b2a718ff4 100644 (file)
@@ -1222,6 +1222,11 @@ lto_init (void)
   NAME_TYPE (long_double_type_node, "long double");
   NAME_TYPE (void_type_node, "void");
   NAME_TYPE (boolean_type_node, "bool");
+  NAME_TYPE (complex_float_type_node, "complex float");
+  NAME_TYPE (complex_double_type_node, "complex double");
+  NAME_TYPE (complex_long_double_type_node, "complex long double");
+  if (int128_integer_type_node)
+    NAME_TYPE (int128_integer_type_node, "__int128");
 #undef NAME_TYPE
 
   /* Initialize LTO-specific data structures.  */
index dedb993c108e93917e797c52934f28513a41b689..68b0a93a1f085234aaf8b99994ea9ed709498b07 100644 (file)
@@ -1,3 +1,37 @@
+2014-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/60535
+       * c-c++-common/ubsan/null-1.c: Don't skip if -flto.
+       * c-c++-common/ubsan/null-2.c: Likewise.
+       * c-c++-common/ubsan/null-3.c: Likewise.
+       * c-c++-common/ubsan/null-4.c: Likewise.
+       * c-c++-common/ubsan/null-5.c: Likewise.
+       * c-c++-common/ubsan/null-6.c: Likewise.
+       * c-c++-common/ubsan/null-7.c: Likewise.
+       * c-c++-common/ubsan/null-8.c: Likewise.
+       * c-c++-common/ubsan/null-9.c: Likewise.
+       * c-c++-common/ubsan/null-10.c: Likewise.
+       * c-c++-common/ubsan/null-11.c: Likewise.
+       * c-c++-common/ubsan/overflow-1.c: Likewise.
+       * c-c++-common/ubsan/overflow-2.c: Likewise.
+       * c-c++-common/ubsan/overflow-add-1.c: Likewise.
+       * c-c++-common/ubsan/overflow-add-2.c: Likewise.
+       * c-c++-common/ubsan/overflow-int128.c: Likewise.
+       * c-c++-common/ubsan/overflow-mul-1.c: Likewise.
+       * c-c++-common/ubsan/overflow-mul-2.c: Likewise.
+       * c-c++-common/ubsan/overflow-mul-3.c: Likewise.
+       * c-c++-common/ubsan/overflow-mul-4.c: Likewise.
+       * c-c++-common/ubsan/overflow-negate-1.c: Likewise.
+       * c-c++-common/ubsan/overflow-negate-2.c: Likewise.
+       * c-c++-common/ubsan/overflow-sub-1.c: Likewise.
+       * c-c++-common/ubsan/overflow-sub-2.c: Likewise.
+       * c-c++-common/ubsan/pr59333.c: Likewise.
+       * c-c++-common/ubsan/pr59503.c: Likewise.
+       * c-c++-common/ubsan/pr59667.c: Likewise.
+       * c-c++-common/ubsan/undefined-1.c: Likewise.
+       * g++.dg/ubsan/pr59250.C: Likewise.
+       * g++.dg/ubsan/pr59306.C: Likewise.
+
 2014-03-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * gcc.dg/tls/pr58595.c: Add tls options.
index 887dfdcdb9ff5bd32cc42395a22edad0a7224d78..08d547f3aaebf7113321c9b9d7d843baad06fae2 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 main (void)
index 267ab1f321c7fd78560a51447bc593a5846d1f21..c3d61a01d5bfa1001a436d2573c57891b6a86847 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 main (void)
index 83e65af7e86d4d7582918c5e0838756b92f48a03..6645f2acfcb3b456b43bb70c917d5a8236b0f428 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 struct S {
   int i;
index c5303ea97a7a31e0325c2619c5c8905692ff5e26..cb3907fa5cc393056ad0e46ffec37079fd8cb53e 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 main (void)
index 0beb20cfbd0003777b132f6a700d18eacd1917da..f58562c63b8c8f34ec3071dee1d9a883abb33844 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 foo (int *p)
index b5f03ed0b60b258217a7c3d22591832b56a56884..18506afb3c378442edd5e875db8cf445fdeb634e 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 main (void)
index f6db4744446e74f49b2377086c5fe9eedd362124..c3c45b7c47e678f33556e62fd817687187c33d45 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 typedef volatile const _Complex float *T;
 
index 705635c0d84fa7464aabdf0d089c942d3b7ea15f..63fade5a6e1920ff0f2f5f6d385af6c7e301135a 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 main (void)
index 1d8216a3d2fa879f148a72e6dc878431c1e34f14..bf30a0b9b399a0c1515eff1d66a770c63be41ac8 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int *
 gao (void)
index 2cf3939ca5e4eec3a17f4a2ce8c77f651c9e7ece..170377ee4d4fa2360fd486c367cf9cc0b262cc43 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 struct S {
   int i;
index 7fabbeca4c7f0294e5c72fbe29a69db00d7b05f7..ab43d22a325a6d043efc7d9875a792b94912f692 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 union U {
   int i;
index e8965d2f0257eb3357f183d74ecf441d1f752621..8165463c1f3fa3b9c047442b9a81076ca1eb28ea 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #ifndef ASM1
 # define ASM1(a) /* Nothing */
index bd4139f8dff4b6670e4c9c1c182d6ba44e0b1c64..aeca04d341d9b8ed2b8492ec354ca9f7223229d5 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define ASM1(a) asm volatile ("" : "+g" (a))
 #define ASM2(a, b) asm volatile ("" : "+g" (a), "+g" (b))
index 436082d21d95b7799fbeac5194d8c6f2d0160671..3f4790b6c34140b33901b0012c50c8d2a29d3b5e 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define SCHAR_MAX __SCHAR_MAX__
 #define SHRT_MAX __SHRT_MAX__
index f8af8281f1c03d79b89e2fc019e289b004650d1f..85499d86c26e44b402a2d9289464ecf8fe36ee08 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define INT_MAX __INT_MAX__
 #define INT_MIN (-__INT_MAX__ - 1)
index 3680bd3e72619808f96b9f782b1c89e127ff8ef1..9a850243d3b8c3df35521b625e637d488f904484 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target int128 } */
 /* { dg-options "-fsanitize=signed-integer-overflow" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 /* 2^127 - 1 */
 #define INT128_MAX (__int128) (((unsigned __int128) 1 << ((__SIZEOF_INT128__ * __CHAR_BIT__) - 1)) - 1)
index 0f2ea59df491ac4692dbe7c5c4d9c41135d50922..bb355a211114d1816670d34accad2cc5872a52ca 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define SCHAR_MAX __SCHAR_MAX__
 #define SHRT_MAX __SHRT_MAX__
index ddfbb2e7ae06366cb36e9a533ef66c1387203924..ece25a354b8a54e2414254ea29d3cad48718099a 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define INT_MAX __INT_MAX__
 #define LONG_MAX __LONG_MAX__
index 93596417d4ba799f190a4047c0ffd2165420274e..49332dc0e36236903451ff38927b55e7f976247b 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 __attribute__((noinline, noclone)) long long
 mul (long long x, long long y)
index b05c1a43fb7624851ea9e4c302d53c43c8fc8479..82e114001b413b77edc68d98474618a15a47861f 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
+
 
 int
 main ()
index b73787c1d19476b693b5a726c7e495f69ba5627c..85f81d8b547d94bdd7ba23244e60670be037a534 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define INT_MIN (-__INT_MAX__ - 1)
 #define LONG_MIN (-__LONG_MAX__ - 1L)
index 9c19d2c815c0499eeb35f65a377b88c1acfc7abf..9a711c259765defdc5990837d82a6a499fe9ec7b 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define SCHAR_MIN (-__SCHAR_MAX__ - 1)
 #define SHRT_MIN (-__SHRT_MAX__ - 1)
index 3b955279ba79bd18ffcdbb60142eb90c5836b18b..2dcf16d12309b962f7d63da732dd8eae54fb4d2b 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define SCHAR_MAX __SCHAR_MAX__
 #define SCHAR_MIN (-__SCHAR_MAX__ - 1)
index 99f59054e163bcbdc742a80e2dcfa97965cb3c58..6476b65d2a01b1c5cf5f39118f1f0ab1520e72de 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 #define INT_MAX __INT_MAX__
 #define INT_MIN (-__INT_MAX__ - 1)
index 170da8c859b83fe81f0449e8461565dcd6fad8c5..b68775702be1341419e879a04385f3e88f3cdb84 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=undefined" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 long long int __attribute__ ((noinline, noclone))
 foo (long long int i, long long int j)
index eb921c4ff188a54ff9ea64d5c9a557fc09775522..12fb4c240d7ff6ca275792a5fd87312aa09694f0 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=signed-integer-overflow" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 main (void)
index 367e3034629d192429220026181eeb23d576eaea..7fad702990795196d42a48a6b003f080aedccd06 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=undefined" } */
 /* { dg-shouldfail "ubsan" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 main (void)
index 1229b711fe92147a3ac484bb714e730ec5be77d9..2458fcbd95d43e579690e844fd7f4effbb6f3951 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-do run } */
 /* { dg-options "-fsanitize=undefined" } */
-/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
 
 int
 foo (int x, int y)
index 4851306882663c6ad6a6a196dc3c237c03af7d27..e438d24fda98b1159eebc54a748d538a56eac63c 100644 (file)
@@ -1,7 +1,6 @@
 // PR sanitizer/59250
 // { dg-do compile }
 // { dg-options "-fsanitize=undefined" }
-// { dg-skip-if "" { *-*-* } { "-flto" } { "" } }
 
 struct E {
  int i;
index 426e6a5bd5f6e8a93156bf1b4bdd7bcf72ec26c8..621093c6b732c7090b1abbafc7b303c3b95f4531 100644 (file)
@@ -1,6 +1,5 @@
 // { dg-do compile }
 // { dg-options "-fsanitize=undefined" }
-// { dg-skip-if "" { *-*-* } { "-flto" } { "" } }
 
 class A {
   void bar (void (A::*) (int));
index 1841a947b9c6e3d152685cd8e0bd3cc6030af215..6f110c1ca3d0613efaf78302b7848aa8aecc633e 100644 (file)
@@ -390,7 +390,7 @@ ubsan_type_descriptor (tree type, bool want_pointer_type_p)
   TREE_CONSTANT (ctor) = 1;
   TREE_STATIC (ctor) = 1;
   DECL_INITIAL (decl) = ctor;
-  rest_of_decl_compilation (decl, 1, 0);
+  varpool_finalize_decl (decl);
 
   /* Save the VAR_DECL into the hash table.  */
   decl_for_type_insert (type, decl);
@@ -501,7 +501,7 @@ ubsan_create_data (const char *name, location_t loc,
   TREE_CONSTANT (ctor) = 1;
   TREE_STATIC (ctor) = 1;
   DECL_INITIAL (var) = ctor;
-  rest_of_decl_compilation (var, 1, 0);
+  varpool_finalize_decl (var);
 
   return var;
 }