From 257da5afe5812ade74c1cd43f6247f86929f97a6 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 13 Oct 2013 20:26:19 +0200 Subject: [PATCH] Bring back -disable-fp-elim. It was moved to llvm/CodeGen/CommandLineFlags.h. GitHub: Fixes #502. --- driver/cl_options.cpp | 4 ++++ driver/cl_options.h | 1 + driver/main.cpp | 2 +- driver/targetmachine.cpp | 4 ++-- driver/targetmachine.h | 2 +- tests/d2/dmd-testsuite | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/driver/cl_options.cpp b/driver/cl_options.cpp index 643b901c..023be21f 100644 --- a/driver/cl_options.cpp +++ b/driver/cl_options.cpp @@ -325,6 +325,10 @@ cl::opt mFloatABI("float-abi", clEnumValN(FloatABI::Hard, "hard", "Hardware floating-point ABI and instructions"), clEnumValEnd)); +cl::opt disableFpElim("disable-fp-elim", + cl::desc("Disable frame pointer elimination optimization"), + cl::init(false)); + static cl::opt asserts("asserts", cl::desc("(*) Enable assertions"), cl::value_desc("bool"), diff --git a/driver/cl_options.h b/driver/cl_options.h index 4cc67c68..d0b84043 100644 --- a/driver/cl_options.h +++ b/driver/cl_options.h @@ -61,6 +61,7 @@ namespace opts { extern cl::opt mTargetTriple; extern cl::opt mRelocModel; extern cl::opt mCodeModel; + extern cl::opt disableFpElim; extern cl::opt mFloatABI; extern cl::opt singleObj; extern cl::opt linkonceTemplates; diff --git a/driver/main.cpp b/driver/main.cpp index f349cc4a..14f18c71 100644 --- a/driver/main.cpp +++ b/driver/main.cpp @@ -637,7 +637,7 @@ int main(int argc, char **argv) gTargetMachine = createTargetMachine(mTargetTriple, mArch, mCPU, mAttrs, bitness, mFloatABI, mRelocModel, mCodeModel, codeGenOptLevel(), - global.params.symdebug); + global.params.symdebug || disableFpElim); { llvm::Triple triple = llvm::Triple(gTargetMachine->getTargetTriple()); diff --git a/driver/targetmachine.cpp b/driver/targetmachine.cpp index 4be79b08..650c5558 100644 --- a/driver/targetmachine.cpp +++ b/driver/targetmachine.cpp @@ -262,7 +262,7 @@ llvm::TargetMachine* createTargetMachine( llvm::Reloc::Model relocModel, llvm::CodeModel::Model codeModel, llvm::CodeGenOpt::Level codeGenOptLevel, - bool genDebugInfo) + bool noFramePointerElim) { // Determine target triple. If the user didn't explicitly specify one, use // the one set at LLVM configure time. @@ -362,7 +362,7 @@ llvm::TargetMachine* createTargetMachine( } llvm::TargetOptions targetOptions; - targetOptions.NoFramePointerElim = genDebugInfo; + targetOptions.NoFramePointerElim = noFramePointerElim; switch (floatABI) { diff --git a/driver/targetmachine.h b/driver/targetmachine.h index 83106bb3..e0236d08 100644 --- a/driver/targetmachine.h +++ b/driver/targetmachine.h @@ -54,6 +54,6 @@ llvm::TargetMachine* createTargetMachine( llvm::Reloc::Model relocModel, llvm::CodeModel::Model codeModel, llvm::CodeGenOpt::Level codeGenOptLevel, - bool genDebugInfo); + bool noFramePointerElim); #endif // LDC_DRIVER_TARGET_H diff --git a/tests/d2/dmd-testsuite b/tests/d2/dmd-testsuite index e996666c..ab51931e 160000 --- a/tests/d2/dmd-testsuite +++ b/tests/d2/dmd-testsuite @@ -1 +1 @@ -Subproject commit e996666c8511b473a80a736d2e504259f19041d8 +Subproject commit ab51931e8ded2854717bcde45b3829432de44b72