Author: tstellar
Date: Wed May 24 09:20:42 2017
New Revision: 303749

URL: http://llvm.org/viewvc/llvm-project?rev=303749&view=rev
Log:
Merging r303679:

------------------------------------------------------------------------
r303679 | oleg | 2017-05-23 15:38:37 -0400 (Tue, 23 May 2017) | 16 lines

[ARM] Temporarily disable globals promotion to constant pools to prevent 
miscompilation

Summary:
A temporary workaround for PR32780 - rematerialized instructions accessing the 
same promoted global through different constant pool entries.

The patch turns off the globals promotion optimization leaving all its code in 
place, so that it can be easily turned on once PR32780 is fixed.

Since this is a miscompilation issue causing generation of misbehaving code, 
and the problem is very subtle, the patch might be valuable enough to get into 
4.0.1.

Reviewers: efriedma, jmolloy

Reviewed By: efriedma

Subscribers: aemerson, javed.absar, llvm-commits, rengolin, asl, tstellar

Differential Revision: https://reviews.llvm.org/D33446
------------------------------------------------------------------------

Modified:
    llvm/branches/release_40/lib/Target/ARM/ARMISelLowering.cpp
    llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-dbg.ll
    llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-ldrh.ll
    llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote.ll

Modified: llvm/branches/release_40/lib/Target/ARM/ARMISelLowering.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Target/ARM/ARMISelLowering.cpp?rev=303749&r1=303748&r2=303749&view=diff
==============================================================================
--- llvm/branches/release_40/lib/Target/ARM/ARMISelLowering.cpp (original)
+++ llvm/branches/release_40/lib/Target/ARM/ARMISelLowering.cpp Wed May 24 
09:20:42 2017
@@ -72,7 +72,7 @@ static cl::opt<bool> EnableConstpoolProm
     "arm-promote-constant", cl::Hidden,
     cl::desc("Enable / disable promotion of unnamed_addr constants into "
              "constant pools"),
-    cl::init(true));
+    cl::init(false)); // FIXME: set to true by default once PR32780 is fixed
 static cl::opt<unsigned> ConstpoolPromotionMaxSize(
     "arm-promote-constant-max-size", cl::Hidden,
     cl::desc("Maximum size of constant to promote into a constant pool"),

Modified: llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-dbg.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-dbg.ll?rev=303749&r1=303748&r2=303749&view=diff
==============================================================================
--- llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-dbg.ll 
(original)
+++ llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-dbg.ll Wed 
May 24 09:20:42 2017
@@ -1,4 +1,4 @@
-; RUN: llc -relocation-model=static < %s | FileCheck %s
+; RUN: llc -relocation-model=static -arm-promote-constant < %s | FileCheck %s
 
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 target triple = "thumbv7m--linux-gnu"

Modified: llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-ldrh.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-ldrh.ll?rev=303749&r1=303748&r2=303749&view=diff
==============================================================================
--- llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-ldrh.ll 
(original)
+++ llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote-ldrh.ll Wed 
May 24 09:20:42 2017
@@ -1,5 +1,5 @@
-; RUN: llc < %s -O0 -fast-isel=false | FileCheck %s
-; RUN: llc < %s -O0 -fast-isel=false -filetype=obj
+; RUN: llc < %s -O0 -fast-isel=false -arm-promote-constant | FileCheck %s
+; RUN: llc < %s -O0 -fast-isel=false -filetype=obj -arm-promote-constant
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 target triple = "thumbv6m-arm-linux-gnueabi"
 

Modified: llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote.ll?rev=303749&r1=303748&r2=303749&view=diff
==============================================================================
--- llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote.ll (original)
+++ llvm/branches/release_40/test/CodeGen/ARM/constantpool-promote.ll Wed May 
24 09:20:42 2017
@@ -1,7 +1,7 @@
-; RUN: llc -relocation-model=static < %s | FileCheck %s
-; RUN: llc -relocation-model=pic < %s | FileCheck %s
-; RUN: llc -relocation-model=ropi < %s | FileCheck %s
-; RUN: llc -relocation-model=rwpi < %s | FileCheck %s
+; RUN: llc -relocation-model=static -arm-promote-constant < %s | FileCheck %s
+; RUN: llc -relocation-model=pic -arm-promote-constant < %s | FileCheck %s
+; RUN: llc -relocation-model=ropi -arm-promote-constant < %s | FileCheck %s
+; RUN: llc -relocation-model=rwpi -arm-promote-constant < %s | FileCheck %s
 
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 target triple = "armv7--linux-gnueabihf"


_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to