Revert "Introduce CompilerConfig."
This reverts commit 8b2c3e72f7652bd579bf0467b333090ff7730390.
diff --git a/Config.h b/Config.h
index 3c29c60..c1f4133 100644
--- a/Config.h
+++ b/Config.h
@@ -58,19 +58,14 @@
#endif
#endif
-#define DEFAULT_ARM_TRIPLE_STRING "armv7-none-linux-gnueabi"
-#define DEFAULT_MIPS_TRIPLE_STRING "mipsel-none-linux-gnueabi"
-#define DEFAULT_X86_TRIPLE_STRING "i686-unknown-linux"
-#define DEFAULT_X86_64_TRIPLE_STRING "x86_64-unknown-linux"
-
#if defined(DEFAULT_ARM_CODEGEN)
- #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_ARM_TRIPLE_STRING
+ #define DEFAULT_TARGET_TRIPLE_STRING "armv7-none-linux-gnueabi"
#elif defined(DEFAULT_MIPS_CODEGEN)
- #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_MIPS_TRIPLE_STRING
+ #define DEFAULT_TARGET_TRIPLE_STRING "mipsel-none-linux-gnueabi"
#elif defined(DEFAULT_X86_CODEGEN)
- #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_X86_TRIPLE_STRING
+ #define DEFAULT_TARGET_TRIPLE_STRING "i686-unknown-linux"
#elif defined(DEFAULT_X86_64_CODEGEN)
- #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_X86_64_TRIPLE_STRING
+ #define DEFAULT_TARGET_TRIPLE_STRING "x86_64-unknown-linux"
#endif
#if (defined(__VFP_FP__) && !defined(__SOFTFP__))
diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk
index d101107..02088cb 100644
--- a/lib/ExecutionEngine/Android.mk
+++ b/lib/ExecutionEngine/Android.mk
@@ -27,12 +27,10 @@
BCCContextImpl.cpp \
BCCRuntimeSymbolResolver.cpp \
Compiler.cpp \
- CompilerConfig.cpp \
ELFObjectLoaderImpl.cpp \
FileBase.cpp \
GDBJIT.cpp \
GDBJITRegistrar.cpp \
- Initialization.cpp \
InputFile.cpp \
MCCacheWriter.cpp \
MCCacheReader.cpp \
@@ -51,8 +49,7 @@
Sha1Helper.cpp \
Source.cpp \
SymbolResolverProxy.cpp \
- SymbolResolvers.cpp \
- TargetCompilerConfigs.cpp
+ SymbolResolvers.cpp
#=====================================================================
diff --git a/lib/ExecutionEngine/CompilerConfig.cpp b/lib/ExecutionEngine/CompilerConfig.cpp
deleted file mode 100644
index faaaa97..0000000
--- a/lib/ExecutionEngine/CompilerConfig.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2012, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "CompilerConfig.h"
-
-#include <llvm/CodeGen/SchedulerRegistry.h>
-#include <llvm/MC/SubtargetFeature.h>
-#include <llvm/Support/TargetRegistry.h>
-
-#include "DebugHelper.h"
-#include "TargetCompilerConfigs.h"
-
-using namespace bcc;
-
-CompilerConfig::CompilerConfig(const std::string &pTriple)
- : mTriple(pTriple), mTarget(NULL) {
- //===--------------------------------------------------------------------===//
- // Default setting of register sheduler
- //===--------------------------------------------------------------------===//
- llvm::RegisterScheduler::setDefault(llvm::createDefaultScheduler);
-
- //===--------------------------------------------------------------------===//
- // Default setting of target options
- //===--------------------------------------------------------------------===//
- // Use hardfloat ABI by default.
- //
- // TODO(all): Need to detect the CPU capability and decide whether to use
- // softfp. To use softfp, change the following 2 lines to
- //
- // options.FloatABIType = llvm::FloatABI::Soft;
- // options.UseSoftFloat = true;
- mTargetOpts.FloatABIType = llvm::FloatABI::Soft;
- mTargetOpts.UseSoftFloat = false;
-
- // Enable frame pointer elimination optimization by default.
- mTargetOpts.NoFramePointerElim = false;
-
- //===--------------------------------------------------------------------===//
- // Default setting for code model
- //===--------------------------------------------------------------------===//
- mCodeModel = llvm::CodeModel::Small;
-
- //===--------------------------------------------------------------------===//
- // Default setting for relocation model
- //===--------------------------------------------------------------------===//
- mRelocModel = llvm::Reloc::Default;
-
- //===--------------------------------------------------------------------===//
- // Default setting for optimization level (-O2)
- //===--------------------------------------------------------------------===//
- mOptLevel = llvm::CodeGenOpt::Default;
-
- //===--------------------------------------------------------------------===//
- // Default setting for architecture type
- //===--------------------------------------------------------------------===//
- mArchType = llvm::Triple::UnknownArch;
-
- initializeTarget();
- initializeArch();
-
- return;
-}
-
-bool CompilerConfig::initializeTarget() {
- std::string error;
- mTarget = llvm::TargetRegistry::lookupTarget(mTriple, error);
- if (mTarget != NULL) {
- return true;
- } else {
- ALOGE("Cannot initialize llvm::Target for given triple '%s'! (%s)",
- mTriple.c_str(), error.c_str());
- return false;
- }
-}
-
-void CompilerConfig::initializeArch() {
- if (mTarget != NULL) {
- mArchType = llvm::Triple::getArchTypeForLLVMName(mTarget->getName());
- } else {
- mArchType = llvm::Triple::UnknownArch;
- }
- return;
-}
-
-void CompilerConfig::setFeatureString(const std::vector<std::string> &pAttrs) {
- llvm::SubtargetFeatures f;
-
- for (std::vector<std::string>::const_iterator attr_iter = pAttrs.begin(),
- attr_end = pAttrs.end();
- attr_iter != attr_end; attr_iter++) {
- f.AddFeature(*attr_iter);
- }
-
- mFeatureString = f.getString();
- return;
-}
diff --git a/lib/ExecutionEngine/CompilerConfig.h b/lib/ExecutionEngine/CompilerConfig.h
deleted file mode 100644
index d83086a..0000000
--- a/lib/ExecutionEngine/CompilerConfig.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2012, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef BCC_EXECUTION_ENGINE_COMPILER_CONFIG_H
-#define BCC_EXECUTION_ENGINE_COMPILER_CONFIG_H
-
-#include <string>
-#include <vector>
-
-#include <llvm/ADT/Triple.h>
-#include <llvm/Support/CodeGen.h>
-#include <llvm/Target/TargetOptions.h>
-
-namespace llvm {
-
-class Target;
-
-} // end namespace llvm
-
-namespace bcc {
-
-class CompilerConfig {
-private:
- //===--------------------------------------------------------------------===//
- // Available Configurations
- //===--------------------------------------------------------------------===//
- std::string mTriple;
-
- // Optional. If given, the name of the target CPU to generate code for.
- std::string mCPU;
-
- llvm::TargetOptions mTargetOpts;
-
- llvm::CodeModel::Model mCodeModel;
-
- llvm::CodeGenOpt::Level mOptLevel;
-
- llvm::Reloc::Model mRelocModel;
-
- // The list of target specific features to enable or disable -- this should
- // be a list of strings starting with '+' (enable) or '-' (disable).
- std::string mFeatureString;
-
-private:
- //===--------------------------------------------------------------------===//
- // These are generated by CompilerConfig during initialize().
- //===--------------------------------------------------------------------===//
- const llvm::Target *mTarget;
- bool initializeTarget();
-
- llvm::Triple::ArchType mArchType;
- void initializeArch();
-
-public:
- //===--------------------------------------------------------------------===//
- // Getters
- //===--------------------------------------------------------------------===//
- inline const std::string &getTriple() const
- { return mTriple; }
-
- inline const std::string &getCPU() const
- { return mCPU; }
- inline void setCPU(const std::string &pCPU)
- { mCPU = pCPU; }
-
- inline const llvm::TargetOptions &getTargetOptions() const
- { return mTargetOpts; }
- inline llvm::TargetOptions &getTargetOptions()
- { return mTargetOpts; }
-
- inline llvm::CodeModel::Model getCodeModel() const
- { return mCodeModel; }
- inline void setCodeModel(llvm::CodeModel::Model pCodeMode)
- { mCodeModel = pCodeMode; }
-
- inline llvm::CodeGenOpt::Level getOptimizationLevel() const
- { return mOptLevel; }
- inline void setOptimizationLevel(llvm::CodeGenOpt::Level pOptLvl)
- { mOptLevel = pOptLvl; }
-
- inline llvm::Reloc::Model getRelocationModel() const
- { return mRelocModel; }
- inline void setRelocationModel(llvm::Reloc::Model pRelocModel)
- { mRelocModel = pRelocModel; }
-
- inline const llvm::Target *getTarget() const
- { return mTarget; }
-
- inline llvm::Triple::ArchType getArchType() const
- { return mArchType; }
-
- inline const std::string &getFeatureString() const
- { return mFeatureString; }
- void setFeatureString(const std::vector<std::string> &pAttrs);
-
-public:
- CompilerConfig(const std::string &pTriple);
-
- virtual ~CompilerConfig() { }
-};
-
-} // end namespace bcc
-
-#endif // BCC_EXECUTION_ENGINE_COMPILER_CONFIG_H
diff --git a/lib/ExecutionEngine/Initialization.cpp b/lib/ExecutionEngine/Initialization.cpp
deleted file mode 100644
index 7cdb938..0000000
--- a/lib/ExecutionEngine/Initialization.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2012, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "Initialization.h"
-
-#include <cstdlib>
-
-#include <llvm/Support/ErrorHandling.h>
-#include <llvm/Support/TargetSelect.h>
-
-#include "Config.h"
-#include "DebugHelper.h"
-
-namespace {
-
-void llvm_error_handler(void *pUserData, const std::string &pMessage) {
- ALOGE("%s", pMessage.c_str());
- ::exit(1);
-}
-
-} // end anonymous namespace
-
-void bcc::init::Initialize() {
- static bool is_initialized = false;
-
- if (is_initialized) {
- return;
- }
-
- // Setup error handler for LLVM.
- llvm::remove_fatal_error_handler();
- llvm::install_fatal_error_handler(llvm_error_handler, NULL);
-
-#if defined(PROVIDE_ARM_CODEGEN)
- LLVMInitializeARMAsmPrinter();
- LLVMInitializeARMTargetMC();
- LLVMInitializeARMTargetInfo();
- LLVMInitializeARMTarget();
-#endif
-
-#if defined(PROVIDE_MIPS_CODEGEN)
- LLVMInitializeMipsAsmPrinter();
- LLVMInitializeMipsTargetMC();
- LLVMInitializeMipsTargetInfo();
- LLVMInitializeMipsTarget();
-#endif
-
-#if defined(PROVIDE_X86_CODEGEN)
- LLVMInitializeX86AsmPrinter();
- LLVMInitializeX86TargetMC();
- LLVMInitializeX86TargetInfo();
- LLVMInitializeX86Target();
-#endif
-
-#if USE_DISASSEMBLER
- InitializeDisassembler();
-#endif
-
- is_initialized = true;
-
- return;
-}
diff --git a/lib/ExecutionEngine/Initialization.h b/lib/ExecutionEngine/Initialization.h
deleted file mode 100644
index 9a357bc..0000000
--- a/lib/ExecutionEngine/Initialization.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2012, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef BCC_EXECUTION_ENGINE_INITIALIZATION_H
-#define BCC_EXECUTION_ENGINE_INITIALIZATION_H
-
-namespace bcc {
-
-namespace init {
-
-void Initialize();
-
-} // end namespace init
-
-} // end namespace bcc
-
-#endif // BCC_EXECUTION_ENGINE_INITIALIZATION_H
diff --git a/lib/ExecutionEngine/TargetCompilerConfigs.cpp b/lib/ExecutionEngine/TargetCompilerConfigs.cpp
deleted file mode 100644
index 2e2f5da..0000000
--- a/lib/ExecutionEngine/TargetCompilerConfigs.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2012, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "TargetCompilerConfigs.h"
-
-using namespace bcc;
-
-//===----------------------------------------------------------------------===//
-// ARM
-//===----------------------------------------------------------------------===//
-#if defined(PROVIDE_ARM_CODEGEN)
-
-void ARMCompilerConfig::GetFeatureVector(std::vector<std::string> &pAttributes,
- bool pEnableNEON) {
-#if defined(ARCH_ARM_HAVE_VFP)
- pAttributes.push_back("+vfp3");
-# if !defined(ARCH_ARM_HAVE_VFP_D32)
- pAttributes.push_back("+d16");
-# endif
-#endif
-
-#if defined(ARCH_ARM_HAVE_NEON) && !defined(DISABLE_ARCH_ARM_HAVE_NEON)
- if (pEnableNEON) {
- // FIXME(all): Turn NEON back on after debugging the rebase.
- //attributes.push_back("+neon");
- //attributes.push_back("+neonfp");
- pAttributes.push_back("-neon");
- pAttributes.push_back("-neonfp");
- } else {
- pAttributes.push_back("-neon");
- pAttributes.push_back("-neonfp");
- }
-#else
- pAttributes.push_back("-neon");
- pAttributes.push_back("-neonfp");
-#endif
-
- return;
-}
-
-ARMCompilerConfig::ARMCompilerConfig()
- : CompilerConfig(DEFAULT_ARM_TRIPLE_STRING) {
-
- // Enable NEON by default.
- mEnableNEON = true;
-
- std::vector<std::string> attributes;
- GetFeatureVector(attributes, /* pEnableNEON */mEnableNEON);
- setFeatureString(attributes);
-
- return;
-}
-
-bool ARMCompilerConfig::enableNEON(bool pEnable) {
-#if defined(ARCH_ARM_HAVE_NEON) && !defined(DISABLE_ARCH_ARM_HAVE_NEON)
- if (mEnableNEON != pEnable) {
- std::vector<std::string> attributes;
- GetFeatureVector(attributes, pEnable);
- setFeatureString(attributes);
- mEnableNEON = pEnable;
- return true;
- }
- // Fall-through
-#endif
- return false;
-}
-#endif // defined(PROVIDE_ARM_CODEGEN)
diff --git a/lib/ExecutionEngine/TargetCompilerConfigs.h b/lib/ExecutionEngine/TargetCompilerConfigs.h
deleted file mode 100644
index bf10a7a..0000000
--- a/lib/ExecutionEngine/TargetCompilerConfigs.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2012, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef BCC_EXECUTION_ENGINE_TARGET_COMPILER_CONFIGS_H
-#define BCC_EXECUTION_ENGINE_TARGET_COMPILER_CONFIGS_H
-
-#include "CompilerConfig.h"
-#include "Config.h"
-
-namespace bcc {
-
-//===----------------------------------------------------------------------===//
-// ARM
-//===----------------------------------------------------------------------===//
-#if defined(PROVIDE_ARM_CODEGEN)
-class ARMCompilerConfig : public CompilerConfig {
-private:
- bool mEnableNEON;
-
- static void GetFeatureVector(std::vector<std::string> &pAttributes,
- bool pEnableNEON);
-
-public:
- ARMCompilerConfig();
-
- // Return true if config has been changed after returning from this function.
- bool enableNEON(bool pEnable = true);
-};
-#endif // defined(PROVIDE_ARM_CODEGEN)
-
-//===----------------------------------------------------------------------===//
-// MIPS
-//===----------------------------------------------------------------------===//
-#if defined(PROVIDE_MIPS_CODEGEN)
-class MipsCompilerConfig : public CompilerConfig {
-public:
- MipsCompilerConfig() : CompilerConfig(DEFAULT_MIPS_TRIPLE_STRING) {}
-};
-#endif // defined(PROVIDE_MIPS_CODEGEN)
-
-//===----------------------------------------------------------------------===//
-// X86 and X86_64
-//===----------------------------------------------------------------------===//
-#if defined(PROVIDE_X86_CODEGEN)
-class X86FamilyCompilerConfigBase : public CompilerConfig {
-protected:
- X86FamilyCompilerConfigBase(const std::string &pTriple)
- : CompilerConfig(pTriple) {
- // Disable frame pointer elimination optimization on x86 family.
- getTargetOptions().NoFramePointerElim = true;
- return;
- }
-};
-
-class X86_32CompilerConfig : public X86FamilyCompilerConfigBase {
-public:
- X86_32CompilerConfig() :
- X86FamilyCompilerConfigBase(DEFAULT_X86_TRIPLE_STRING) { }
-};
-
-class X86_64CompilerConfig : public X86FamilyCompilerConfigBase {
-public:
- X86_64CompilerConfig() :
- X86FamilyCompilerConfigBase(DEFAULT_X86_64_TRIPLE_STRING) {
- setCodeModel(llvm::CodeModel::Medium);
- }
-};
-#endif // defined(PROVIDE_X86_CODEGEN)
-
-//===----------------------------------------------------------------------===//
-// Default target
-//===----------------------------------------------------------------------===//
-class DefaultCompilerConfig : public
-#if defined(DEFAULT_ARM_CODEGEN)
- ARMCompilerConfig
-#elif defined(DEFAULT_MIPS_CODEGEN)
- MipsCompilerConfig
-#elif defined(DEFAULT_X86_CODEGEN)
- X86_32CompilerConfig
-#elif defined(DEFAULT_X86_64_CODEGEN)
- X86_64CompilerConfig
-#else
-# error "Unsupported Default Target!"
-#endif
-{ };
-
-} // end namespace bcc
-
-#endif // BCC_EXECUTION_ENGINE_TARGET_COMPILER_CONFIGS_H