summaryrefslogtreecommitdiff
path: root/lib/Target/Hexagon/HexagonTargetMachine.cpp
diff options
context:
space:
mode:
authorJyotsna Verma <jverma@codeaurora.org>2013-05-07 19:53:00 +0000
committerJyotsna Verma <jverma@codeaurora.org>2013-05-07 19:53:00 +0000
commitf931f691ee23d431135481fcf23a58658824ca67 (patch)
treed01845577d9f7133cf6279ae29f4bd843a094041 /lib/Target/Hexagon/HexagonTargetMachine.cpp
parent498c91e341ff8cff835b053c25a76fe7c21b06a9 (diff)
downloadllvm-f931f691ee23d431135481fcf23a58658824ca67.tar.gz
llvm-f931f691ee23d431135481fcf23a58658824ca67.tar.bz2
llvm-f931f691ee23d431135481fcf23a58658824ca67.tar.xz
Hexagon: Fix Small Data support to handle -G 0 correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181344 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Hexagon/HexagonTargetMachine.cpp')
-rw-r--r--lib/Target/Hexagon/HexagonTargetMachine.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Target/Hexagon/HexagonTargetMachine.cpp b/lib/Target/Hexagon/HexagonTargetMachine.cpp
index caa1ba4964..dc44b34cff 100644
--- a/lib/Target/Hexagon/HexagonTargetMachine.cpp
+++ b/lib/Target/Hexagon/HexagonTargetMachine.cpp
@@ -15,6 +15,7 @@
#include "Hexagon.h"
#include "HexagonISelLowering.h"
#include "HexagonMachineScheduler.h"
+#include "HexagonTargetObjectFile.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/IR/Module.h"
#include "llvm/PassManager.h"
@@ -156,6 +157,17 @@ bool HexagonPassConfig::addPostRegAlloc() {
}
bool HexagonPassConfig::addPreSched2() {
+ const HexagonTargetMachine &TM = getHexagonTargetMachine();
+ HexagonTargetObjectFile &TLOF =
+ (HexagonTargetObjectFile&)(getTargetLowering()->getObjFileLowering());
+
+ if (getOptLevel() != CodeGenOpt::None)
+ addPass(&IfConverterID);
+ if (!TLOF.IsSmallDataEnabled()) {
+ addPass(createHexagonSplitConst32AndConst64(TM));
+ printAndVerify("After hexagon split const32/64 pass");
+ }
+ return true;
if (getOptLevel() != CodeGenOpt::None)
addPass(&IfConverterID);
return false;