Migrate ABIName to MCTargetOptions so that it can be shared between
authorEric Christopher <echristo@gmail.com>
Wed, 14 Jan 2015 00:50:31 +0000 (00:50 +0000)
committerEric Christopher <echristo@gmail.com>
Wed, 14 Jan 2015 00:50:31 +0000 (00:50 +0000)
the TargetMachine level and the MC level.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225891 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/CommandFlags.h
include/llvm/MC/MCTargetOptions.h
include/llvm/MC/MCTargetOptionsCommandFlags.h
include/llvm/Target/TargetOptions.h
lib/CodeGen/TargetOptionsImpl.cpp
lib/MC/MCTargetOptions.cpp
lib/Target/ARM/ARMTargetMachine.cpp

index 11f5abdfcc3f21f6680155fcf5fad38804be8a9d..973c5954f9ad3a9c34e2cff5ced84cb605012e9a 100644 (file)
@@ -179,11 +179,6 @@ TrapFuncName("trap-func", cl::Hidden,
         cl::desc("Emit a call to trap function rather than a trap instruction"),
         cl::init(""));
 
-cl::opt<std::string>
-ABIName("target-abi", cl::Hidden,
-        cl::desc("The name of the ABI to be targeted from the backend."),
-        cl::init(""));
-
 cl::opt<bool>
 EnablePIE("enable-pie",
           cl::desc("Assume the creation of a position independent executable."),
@@ -285,7 +280,6 @@ static inline TargetOptions InitTargetOptionsFromCodeGenFlags() {
   Options.DisableTailCalls = DisableTailCalls;
   Options.StackAlignmentOverride = OverrideStackAlignment;
   Options.TrapFuncName = TrapFuncName;
-  Options.ABIName = ABIName;
   Options.PositionIndependentExecutable = EnablePIE;
   Options.UseInitArray = !UseCtors;
   Options.DataSections = DataSections;
index de79bae8259934a59d78e6ea2ee624e2010dd397..ce28a196e97475e81deb9b9c690604415e1aeb61 100644 (file)
 #ifndef LLVM_MC_MCTARGETOPTIONS_H
 #define LLVM_MC_MCTARGETOPTIONS_H
 
+#include <string>
+
 namespace llvm {
 
+class StringRef;
+
 class MCTargetOptions {
 public:
   enum AsmInstrumentation {
@@ -31,6 +35,11 @@ public:
   bool ShowMCInst : 1;
   bool AsmVerbose : 1;
   int DwarfVersion;
+  /// getABIName - If this returns a non-empty string this represents the
+  /// textual name of the ABI that we want the backend to use, e.g. o32, or
+  /// aapcs-linux.
+  StringRef getABIName() const;
+  std::string ABIName;
   MCTargetOptions();
 };
 
@@ -45,7 +54,8 @@ inline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
           ARE_EQUAL(ShowMCEncoding) &&
           ARE_EQUAL(ShowMCInst) &&
           ARE_EQUAL(AsmVerbose) &&
-          ARE_EQUAL(DwarfVersion));
+          ARE_EQUAL(DwarfVersion) &&
+         ARE_EQUAL(ABIName));
 #undef ARE_EQUAL
 }
 
index 6d4eb0ef591174e29ab8b23bab059134aa8cfc87..37b0b776bc358f41ca08d8a8860d26209c18ddfd 100644 (file)
@@ -40,6 +40,11 @@ cl::opt<bool> ShowMCInst("asm-show-inst",
                          cl::desc("Emit internal instruction representation to "
                                   "assembly file"));
 
+cl::opt<std::string>
+ABIName("target-abi", cl::Hidden,
+        cl::desc("The name of the ABI to be targeted from the backend."),
+        cl::init(""));
+
 static inline MCTargetOptions InitMCTargetOptionsFromFlags() {
   MCTargetOptions Options;
   Options.SanitizeAddress =
@@ -47,6 +52,7 @@ static inline MCTargetOptions InitMCTargetOptionsFromFlags() {
   Options.MCRelaxAll = RelaxAll;
   Options.DwarfVersion = DwarfVersion;
   Options.ShowMCInst = ShowMCInst;
+  Options.ABIName = ABIName;
   return Options;
 }
 
index 200b86ee761990447c1a9039608e15803dc90788..9ab8242578fd0f6f85c0ffe24e534b4e5dee234b 100644 (file)
@@ -79,7 +79,7 @@ namespace llvm {
           UseInitArray(false), DisableIntegratedAS(false),
           CompressDebugSections(false), FunctionSections(false),
           DataSections(false), TrapUnreachable(false), TrapFuncName(),
-          ABIName(), FloatABIType(FloatABI::Default),
+          FloatABIType(FloatABI::Default),
           AllowFPOpFusion(FPOpFusion::Standard), JTType(JumpTable::Single),
           FCFI(false), ThreadModel(ThreadModel::POSIX),
           CFIType(CFIntegrity::Sub), CFIEnforcing(false), CFIFuncName() {}
@@ -207,12 +207,6 @@ namespace llvm {
     std::string TrapFuncName;
     StringRef getTrapFunctionName() const;
 
-    /// getABIName - If this returns a non-empty string this represents the
-    /// textual name of the ABI that we want the backend to use, e.g. o32, or
-    /// aapcs-linux.
-    std::string ABIName;
-    StringRef getABIName() const;
-
     /// FloatABIType - This setting is set by -float-abi=xxx option is specfied
     /// on the command line. This setting may either be Default, Soft, or Hard.
     /// Default selects the target's default behavior. Soft selects the ABI for
@@ -292,7 +286,6 @@ inline bool operator==(const TargetOptions &LHS,
     ARE_EQUAL(UseInitArray) &&
     ARE_EQUAL(TrapUnreachable) &&
     ARE_EQUAL(TrapFuncName) &&
-    ARE_EQUAL(ABIName) &&
     ARE_EQUAL(FloatABIType) &&
     ARE_EQUAL(AllowFPOpFusion) &&
     ARE_EQUAL(JTType) &&
index d2dd59b0236e687bee6bc5ede37567c23fafde9f..618d903a0904a7ff268274804e4cebf899381693 100644 (file)
@@ -58,10 +58,3 @@ StringRef TargetOptions::getTrapFunctionName() const {
 StringRef TargetOptions::getCFIFuncName() const {
   return CFIFuncName;
 }
-
-/// getABIName - If this returns a non-empty string this represents the
-/// textual name of the ABI that we want the backend to use, e.g. o32, or
-/// aapcs-linux.
-StringRef TargetOptions::getABIName() const {
-  return ABIName;
-}
index 3093ba2b87e88faec5f2a8b0de5c4620254d9e78..1258d9e29f2e7f190277fe2cc778bc8a13ad45ea 100644 (file)
@@ -7,6 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "llvm/ADT/StringRef.h"
 #include "llvm/MC/MCTargetOptions.h"
 
 namespace llvm {
@@ -15,6 +16,10 @@ MCTargetOptions::MCTargetOptions()
     : SanitizeAddress(false), MCRelaxAll(false), MCNoExecStack(false),
       MCFatalWarnings(false), MCSaveTempLabels(false),
       MCUseDwarfDirectory(false), ShowMCEncoding(false), ShowMCInst(false),
-      AsmVerbose(false), DwarfVersion(0) {}
+      AsmVerbose(false), DwarfVersion(0), ABIName() {}
+
+StringRef MCTargetOptions::getABIName() const {
+  return ABIName;
+}
 
 } // end namespace llvm
index d0a768aabb32e27cc5492d9d2b0a62b93d139783..21b1d46019fc7f41af02dcb3e5cf6aade2ede38b 100644 (file)
@@ -55,12 +55,13 @@ static std::unique_ptr<TargetLoweringObjectFile> createTLOF(const Triple &TT) {
 static ARMBaseTargetMachine::ARMABI
 computeTargetABI(const Triple &TT, StringRef CPU,
                  const TargetOptions &Options) {
-  if (Options.getABIName().startswith("aapcs"))
+  if (Options.MCOptions.getABIName().startswith("aapcs"))
     return ARMBaseTargetMachine::ARM_ABI_AAPCS;
-  else if (Options.getABIName().startswith("apcs"))
+  else if (Options.MCOptions.getABIName().startswith("apcs"))
     return ARMBaseTargetMachine::ARM_ABI_APCS;
 
-  assert(Options.getABIName().empty() && "Unknown target-abi option!");
+  assert(Options.MCOptions.getABIName().empty() &&
+         "Unknown target-abi option!");
 
   ARMBaseTargetMachine::ARMABI TargetABI =
       ARMBaseTargetMachine::ARM_ABI_UNKNOWN;