re PR middle-end/66221 (lto1: error: type variant has different TYPE_ARG_TYPES)
authorIlya Enkovich <enkovich.gnu@gmail.com>
Thu, 21 May 2015 08:32:52 +0000 (08:32 +0000)
committerIlya Enkovich <ienkovich@gcc.gnu.org>
Thu, 21 May 2015 08:32:52 +0000 (08:32 +0000)
gcc/

PR middle-end/66221
* ipa-chkp.c (chkp_copy_function_type_adding_bounds): Use
build_distinct_type_copy to copy bounds.

gcc/testsuite/

PR middle-end/66221
* gcc.dg/lto/pr66221_0.c: New test.
* gcc.dg/lto/pr66221_1.c: New test.

From-SVN: r223471

gcc/ChangeLog
gcc/ipa-chkp.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/lto/pr66221_0.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/lto/pr66221_1.c [new file with mode: 0644]

index a62199a2faa963b491f54a89ff0ba926bfec9fef..550d98c30ebbc76c30788d71cc2b99ea3bb090ce 100644 (file)
@@ -1,3 +1,9 @@
+2015-05-21  Ilya Enkovich  <enkovich.gnu@gmail.com>
+
+       PR middle-end/66221
+       * ipa-chkp.c (chkp_copy_function_type_adding_bounds): Use
+       build_distinct_type_copy to copy bounds.
+
 2015-05-21  Thomas Schwinge  <thomas@codesourcery.com>
 
        * genrecog.c (MAX_DEPTH, MIN_NUM_STATEMENTS, MAX_NUM_STATEMENTS):
index ac5eb358a9545fa2ba94d3d45b80956a111fdccd..c7102915cbf36601f81f1d8e378cf1b60db9f8c5 100644 (file)
@@ -308,7 +308,7 @@ chkp_copy_function_type_adding_bounds (tree orig_type)
   if (!arg_type)
     return orig_type;
 
-  type = copy_node (orig_type);
+  type = build_distinct_type_copy (orig_type);
   TYPE_ARG_TYPES (type) = copy_list (TYPE_ARG_TYPES (type));
 
   for (arg_type = TYPE_ARG_TYPES (type);
index 868e1e941daa17f59232572ba10c3eaf9bd306c0..1823df322d9fd50e693626dde30c00212af72498 100644 (file)
@@ -1,3 +1,9 @@
+2015-05-21  Ilya Enkovich  <enkovich.gnu@gmail.com>
+
+       PR middle-end/66221
+       * gcc.dg/lto/pr66221_0.c: New test.
+       * gcc.dg/lto/pr66221_1.c: New test.
+
 2015-05-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        PR c/52952
diff --git a/gcc/testsuite/gcc.dg/lto/pr66221_0.c b/gcc/testsuite/gcc.dg/lto/pr66221_0.c
new file mode 100644 (file)
index 0000000..dbb9282
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-lto-do link } */
+/* { dg-require-effective-target mpx } */
+/* { dg-lto-options { { -O2 -flto -fcheck-pointer-bounds -mmpx } } } */
+
+int test1 (const char *);
+
+int main (int argc, const char **argv)
+{
+  return test1 (argv[0]);
+}
diff --git a/gcc/testsuite/gcc.dg/lto/pr66221_1.c b/gcc/testsuite/gcc.dg/lto/pr66221_1.c
new file mode 100644 (file)
index 0000000..4c94544
--- /dev/null
@@ -0,0 +1,4 @@
+int test1 (const char *p)
+{
+  return (int)(*p);
+}