re PR lto/51280 (ICE when lto1 does not have -fgnu-tm and object file uses TM)
authorAldy Hernandez <aldyh@redhat.com>
Thu, 19 Jan 2012 13:57:04 +0000 (13:57 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Thu, 19 Jan 2012 13:57:04 +0000 (13:57 +0000)
        PR lto/51280
        * lto-wrapper.c (run_gcc): Pass -fgnu_tm on.
        (merge_and_complain): Same.

From-SVN: r183303

gcc/ChangeLog
gcc/lto-wrapper.c
gcc/testsuite/gcc.dg/lto/trans-mem-3_0.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c [new file with mode: 0644]

index 0dabe647147e795d41dd7ffac039ed4810db3965..91b7f26719942693bf85556cf3f693f1beda83d8 100644 (file)
@@ -1,3 +1,9 @@
+2012-01-19  Aldy Hernandez  <aldyh@redhat.com>
+
+       PR lto/51280
+       * lto-wrapper.c (run_gcc): Pass -fgnu_tm on.
+       (merge_and_complain): Same.
+
 2012-01-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR bootstrap/50237
index 1cc7bfb843dd6b99090c078389dada4b429f7abc..6d262e8040bbde1fe4da7251798dd61c70b3729b 100644 (file)
@@ -403,6 +403,7 @@ merge_and_complain (struct cl_decoded_option **decoded_options,
        case OPT_fpie:
        case OPT_fcommon:
        case OPT_fexceptions:
+       case OPT_fgnu_tm:
          /* Do what the old LTO code did - collect exactly one option
             setting per OPT code, we pick the first we encounter.
             ???  This doesn't make too much sense, but when it doesn't
@@ -555,6 +556,7 @@ run_gcc (unsigned argc, char *argv[])
        case OPT_fpie:
        case OPT_fcommon:
        case OPT_fexceptions:
+       case OPT_fgnu_tm:
          break;
 
        default:
diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem-3_0.c b/gcc/testsuite/gcc.dg/lto/trans-mem-3_0.c
new file mode 100644 (file)
index 0000000..dd57890
--- /dev/null
@@ -0,0 +1,8 @@
+/* { dg-lto-options {{-flto}} } */
+/* { dg-lto-do link } */
+
+/* Test that we can build one object file with -fgnu-tm
+   (trans-mem-3_1.c), but do the final link of all objects without
+   -fgnu-tm.  */
+
+int i;
diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c b/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c
new file mode 100644 (file)
index 0000000..d907f68
--- /dev/null
@@ -0,0 +1,18 @@
+/* { dg-options "-fgnu-tm" } */
+
+extern int i;
+
+main()
+{
+  __transaction_atomic { i = 0; }
+}
+
+#define dummy(func)                                                    \
+  __attribute__((noinline,noclone,used)) void func() { asm (""); }
+
+dummy(_ITM_beginTransaction)
+dummy(_ITM_commitTransaction)
+dummy(_ITM_WU4)
+dummy(_ITM_WU8)
+dummy(_ITM_registerTMCloneTable)
+dummy(_ITM_deregisterTMCloneTable)