]> granicus.if.org Git - llvm/commitdiff
Merging r303679:
authorTom Stellard <tstellar@redhat.com>
Wed, 24 May 2017 14:20:42 +0000 (14:20 +0000)
committerTom Stellard <tstellar@redhat.com>
Wed, 24 May 2017 14:20:42 +0000 (14:20 +0000)
------------------------------------------------------------------------
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
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_40@303749 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/constantpool-promote-dbg.ll
test/CodeGen/ARM/constantpool-promote-ldrh.ll
test/CodeGen/ARM/constantpool-promote.ll

index 0f84a2359160a97c8c38c7004ea3b7779393cf99..da28d85c6190e83253e246293b4cf5bd3d322990 100644 (file)
@@ -72,7 +72,7 @@ static cl::opt<bool> EnableConstpoolPromotion(
     "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"),
index ae765d26dcac171b6c20e162b34dabbd01e4c902..84386d2975f0fc7d83b710afeac3ab4a61d885e6 100644 (file)
@@ -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"
index 9e369dc08c4b66d5dc2056aa735ddc00cc8fad58..59970495874be381f60155fb63a43367592cff32 100644 (file)
@@ -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"
 
index fb1bdfd62fb7c18c75d11c04e64da6033b76ef33..d1ff602b783fb479934572fbec3c1422a197a4e9 100644 (file)
@@ -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"