]> granicus.if.org Git - clang/commitdiff
Revert changes r97693, r97700, and r97718.
authorJohn McCall <rjmccall@apple.com>
Thu, 4 Mar 2010 04:29:44 +0000 (04:29 +0000)
committerJohn McCall <rjmccall@apple.com>
Thu, 4 Mar 2010 04:29:44 +0000 (04:29 +0000)
Our testing framework can't deal with disabled targets yet.

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

15 files changed:
include/clang/CodeGen/ModuleBuilder.h
lib/CodeGen/CGBuiltin.cpp
lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/CodeGenModule.h
lib/CodeGen/ModuleBuilder.cpp
lib/Frontend/CodeGenAction.cpp
test/CodeGen/arm-arguments.c
test/CodeGen/arm_asm_clobber.c
test/CodeGen/builtin-attributes.c
test/CodeGen/builtins-arm.c
test/CodeGen/builtins.c
test/CodeGen/darwin-string-literals.c
test/CodeGen/parameter-passing.c
test/Coverage/targets.c
test/Driver/darwin-iphone-defaults.m

index 40669926e29463b54e61672b833df6bedfc56942..2a3aa6a90404f531e1cd6638d8f51f0b8c5bfb91 100644 (file)
@@ -20,7 +20,6 @@
 namespace llvm {
   class LLVMContext;
   class Module;
-  class TargetMachine;
 }
 
 namespace clang {
@@ -37,7 +36,6 @@ namespace clang {
   CodeGenerator *CreateLLVMCodeGen(Diagnostic &Diags,
                                    const std::string &ModuleName,
                                    const CodeGenOptions &CGO,
-                                   const llvm::TargetMachine &Machine,
                                    llvm::LLVMContext& C);
 }
 
index 37435cd81506a405fd2015e5dcc341c927059dda..df6ac7fc243fc4c35ad7cc534c47439b56f43e3b 100644 (file)
@@ -21,9 +21,6 @@
 #include "clang/Basic/TargetBuiltins.h"
 #include "llvm/Intrinsics.h"
 #include "llvm/Target/TargetData.h"
-#include "llvm/Target/TargetLowering.h"
-#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetRegisterInfo.h"
 using namespace clang;
 using namespace CodeGen;
 using namespace llvm;
@@ -410,18 +407,6 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
     Value *F = CGM.getIntrinsic(Intrinsic::eh_unwind_init, 0, 0);
     return RValue::get(Builder.CreateCall(F));
   }
-  case Builtin::BI__builtin_dwarf_sp_column: {
-    const llvm::TargetMachine &Machine = CGM.getTargetMachine();
-    llvm::TargetLowering *TL = Machine.getTargetLowering();
-    assert(TL && "need lowering to codegen __builtin_dwarf_sp_column");
-    const llvm::TargetRegisterInfo *TRI = Machine.getRegisterInfo();
-    assert(TRI && "need register info to codegen __builtin_dwarf_sp_column");
-    unsigned SP = TL->getStackPointerRegisterToSaveRestore();
-    int DwarfSP = TRI->getDwarfRegNum(SP, /*for EH*/ true);
-
-    return RValue::get(
-      llvm::ConstantInt::getSigned(cast<IntegerType>(LLVMIntTy), DwarfSP));
-  }
   case Builtin::BI__builtin_extend_pointer: {
     // Extends a pointer to the size of an _Unwind_Word, which is
     // uint64_t on all platforms.  Generally this gets poked into a
index 89e6490be3517913f473c76f31d1e5b34dd2a492..bc2bd6c882dc19b802b81910f0f3b08ce67a56b2 100644 (file)
@@ -40,12 +40,11 @@ using namespace CodeGen;
 
 
 CodeGenModule::CodeGenModule(ASTContext &C, const CodeGenOptions &CGO,
-                             llvm::Module &M, const llvm::TargetMachine &TM,
-                             const llvm::TargetData &TD, Diagnostic &diags)
+                             llvm::Module &M, const llvm::TargetData &TD,
+                             Diagnostic &diags)
   : BlockModule(C, M, TD, Types, *this), Context(C),
     Features(C.getLangOptions()), CodeGenOpts(CGO), TheModule(M),
-    TheTargetMachine(TM), TheTargetData(TD), TheTargetCodeGenInfo(0),
-    Diags(diags),
+    TheTargetData(TD), TheTargetCodeGenInfo(0), Diags(diags),
     Types(C, M, TD, getTargetCodeGenInfo().getABIInfo()),
     MangleCtx(C), VtableInfo(*this), Runtime(0),
     MemCpyFn(0), MemMoveFn(0), MemSetFn(0), CFConstantStringClassRef(0),
index 8b9a0f29c783ac1db697c94a7038b6f11b7485bf..ac8332647b77a57a7031d3c39690b427fff0b4c3 100644 (file)
@@ -38,7 +38,6 @@ namespace llvm {
   class Function;
   class GlobalValue;
   class TargetData;
-  class TargetMachine;
   class FunctionType;
   class LLVMContext;
 }
@@ -87,7 +86,6 @@ class CodeGenModule : public BlockModule {
   const LangOptions &Features;
   const CodeGenOptions &CodeGenOpts;
   llvm::Module &TheModule;
-  const llvm::TargetMachine &TheTargetMachine;
   const llvm::TargetData &TheTargetData;
   mutable const TargetCodeGenInfo *TheTargetCodeGenInfo;
   Diagnostic &Diags;
@@ -170,8 +168,7 @@ class CodeGenModule : public BlockModule {
   llvm::LLVMContext &VMContext;
 public:
   CodeGenModule(ASTContext &C, const CodeGenOptions &CodeGenOpts,
-                llvm::Module &M, const llvm::TargetMachine &TM,
-                const llvm::TargetData &TD, Diagnostic &Diags);
+                llvm::Module &M, const llvm::TargetData &TD, Diagnostic &Diags);
 
   ~CodeGenModule();
 
@@ -201,9 +198,6 @@ public:
   const llvm::TargetData &getTargetData() const { return TheTargetData; }
   llvm::LLVMContext &getLLVMContext() { return VMContext; }
   const TargetCodeGenInfo &getTargetCodeGenInfo() const;
-  const llvm::TargetMachine &getTargetMachine() const {
-    return TheTargetMachine;
-  }
 
   /// getDeclVisibilityMode - Compute the visibility of the decl \arg D.
   LangOptions::VisibilityMode getDeclVisibilityMode(const Decl *D) const;
index 4ae18bbb14abc99b6d7659ffad001e4ec2e2a573..1e1edc1c482fd98e8c191de16f1b36c3aa794589 100644 (file)
@@ -29,7 +29,6 @@ namespace {
   class CodeGeneratorImpl : public CodeGenerator {
     Diagnostic &Diags;
     llvm::OwningPtr<const llvm::TargetData> TD;
-    const llvm::TargetMachine &TM;
     ASTContext *Ctx;
     const CodeGenOptions CodeGenOpts;  // Intentionally copied in.
   protected:
@@ -37,11 +36,8 @@ namespace {
     llvm::OwningPtr<CodeGen::CodeGenModule> Builder;
   public:
     CodeGeneratorImpl(Diagnostic &diags, const std::string& ModuleName,
-                      const CodeGenOptions &CGO,
-                      const llvm::TargetMachine &TM,
-                      llvm::LLVMContext& C)
-      : Diags(diags), TM(TM), CodeGenOpts(CGO),
-        M(new llvm::Module(ModuleName, C)) {}
+                      const CodeGenOptions &CGO, llvm::LLVMContext& C)
+      : Diags(diags), CodeGenOpts(CGO), M(new llvm::Module(ModuleName, C)) {}
 
     virtual ~CodeGeneratorImpl() {}
 
@@ -60,7 +56,7 @@ namespace {
       M->setDataLayout(Ctx->Target.getTargetDescription());
       TD.reset(new llvm::TargetData(Ctx->Target.getTargetDescription()));
       Builder.reset(new CodeGen::CodeGenModule(Context, CodeGenOpts,
-                                               *M, TM, *TD, Diags));
+                                               *M, *TD, Diags));
     }
 
     virtual void HandleTopLevelDecl(DeclGroupRef DG) {
@@ -99,7 +95,6 @@ namespace {
 CodeGenerator *clang::CreateLLVMCodeGen(Diagnostic &Diags,
                                         const std::string& ModuleName,
                                         const CodeGenOptions &CGO,
-                                        const llvm::TargetMachine &Machine,
                                         llvm::LLVMContext& C) {
-  return new CodeGeneratorImpl(Diags, ModuleName, CGO, Machine, C);
+  return new CodeGeneratorImpl(Diags, ModuleName, CGO, C);
 }
index ca78974bbca30b23e37061057151d33576ac6ea9..b1795a3aa3b54db075426a59974dd89b56cdad66 100644 (file)
@@ -64,7 +64,6 @@ namespace {
 
     llvm::OwningPtr<llvm::Module> TheModule;
     llvm::TargetData *TheTargetData;
-    llvm::OwningPtr<llvm::TargetMachine> TheTargetMachine;
 
     mutable FunctionPassManager *CodeGenPasses;
     mutable PassManager *PerModulePasses;
@@ -85,7 +84,6 @@ namespace {
 
   public:
     BackendConsumer(BackendAction action, Diagnostic &_Diags,
-                    llvm::TargetMachine &machine,
                     const LangOptions &langopts, const CodeGenOptions &compopts,
                     const TargetOptions &targetopts, bool TimePasses,
                     const std::string &infile, llvm::raw_ostream *OS,
@@ -98,8 +96,8 @@ namespace {
       AsmOutStream(OS),
       LLVMIRGeneration("LLVM IR Generation Time"),
       CodeGenerationTime("Code Generation Time"),
-      Gen(CreateLLVMCodeGen(Diags, infile, compopts, machine, C)),
-      TheTargetData(0), TheTargetMachine(&machine),
+      Gen(CreateLLVMCodeGen(Diags, infile, compopts, C)),
+      TheTargetData(0),
       CodeGenPasses(0), PerModulePasses(0), PerFunctionPasses(0) {
 
       if (AsmOutStream)
@@ -218,6 +216,15 @@ bool BackendConsumer::AddEmitPasses() {
   } else {
     bool Fast = CodeGenOpts.OptimizationLevel == 0;
 
+    // Create the TargetMachine for generating code.
+    std::string Error;
+    std::string Triple = TheModule->getTargetTriple();
+    const llvm::Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error);
+    if (!TheTarget) {
+      Diags.Report(diag::err_fe_unable_to_create_target) << Error;
+      return false;
+    }
+
     // FIXME: Expose these capabilities via actual APIs!!!! Aside from just
     // being gross, this is also totally broken if we ever care about
     // concurrency.
@@ -234,6 +241,32 @@ bool BackendConsumer::AddEmitPasses() {
     llvm::UseSoftFloat = CodeGenOpts.SoftFloat;
     UnwindTablesMandatory = CodeGenOpts.UnwindTables;
 
+    TargetMachine::setAsmVerbosityDefault(CodeGenOpts.AsmVerbose);
+
+    // FIXME: Parse this earlier.
+    if (CodeGenOpts.RelocationModel == "static") {
+      TargetMachine::setRelocationModel(llvm::Reloc::Static);
+    } else if (CodeGenOpts.RelocationModel == "pic") {
+      TargetMachine::setRelocationModel(llvm::Reloc::PIC_);
+    } else {
+      assert(CodeGenOpts.RelocationModel == "dynamic-no-pic" &&
+             "Invalid PIC model!");
+      TargetMachine::setRelocationModel(llvm::Reloc::DynamicNoPIC);
+    }
+    // FIXME: Parse this earlier.
+    if (CodeGenOpts.CodeModel == "small") {
+      TargetMachine::setCodeModel(llvm::CodeModel::Small);
+    } else if (CodeGenOpts.CodeModel == "kernel") {
+      TargetMachine::setCodeModel(llvm::CodeModel::Kernel);
+    } else if (CodeGenOpts.CodeModel == "medium") {
+      TargetMachine::setCodeModel(llvm::CodeModel::Medium);
+    } else if (CodeGenOpts.CodeModel == "large") {
+      TargetMachine::setCodeModel(llvm::CodeModel::Large);
+    } else {
+      assert(CodeGenOpts.CodeModel.empty() && "Invalid code model!");
+      TargetMachine::setCodeModel(llvm::CodeModel::Default);
+    }
+
     std::vector<const char *> BackendArgs;
     BackendArgs.push_back("clang"); // Fake program name.
     if (!CodeGenOpts.DebugPass.empty()) {
@@ -250,6 +283,18 @@ bool BackendConsumer::AddEmitPasses() {
     llvm::cl::ParseCommandLineOptions(BackendArgs.size() - 1,
                                       (char**) &BackendArgs[0]);
 
+    std::string FeaturesStr;
+    if (TargetOpts.CPU.size() || TargetOpts.Features.size()) {
+      SubtargetFeatures Features;
+      Features.setCPU(TargetOpts.CPU);
+      for (std::vector<std::string>::const_iterator
+             it = TargetOpts.Features.begin(),
+             ie = TargetOpts.Features.end(); it != ie; ++it)
+        Features.AddFeature(*it);
+      FeaturesStr = Features.getString();
+    }
+    TargetMachine *TM = TheTarget->createTargetMachine(Triple, FeaturesStr);
+
     // Set register scheduler & allocation policy.
     RegisterScheduler::setDefault(createDefaultScheduler);
     RegisterRegAlloc::setDefault(Fast ? createLocalRegisterAllocator :
@@ -282,8 +327,8 @@ bool BackendConsumer::AddEmitPasses() {
     TargetMachine::CodeGenFileType CGFT = TargetMachine::CGFT_AssemblyFile;
     if (Action == Backend_EmitObj)
       CGFT = TargetMachine::CGFT_ObjectFile;
-    if (TheTargetMachine->addPassesToEmitFile(*PM, FormattedOutStream,
-                                              CGFT, OptLevel, DisableVerify)) {
+    if (TM->addPassesToEmitFile(*PM, FormattedOutStream, CGFT, OptLevel,
+                                DisableVerify)) {
       Diags.Report(diag::err_fe_unable_to_interface_with_target);
       return false;
     }
@@ -417,65 +462,8 @@ llvm::Module *CodeGenAction::takeModule() {
   return TheModule.take();
 }
 
-static llvm::TargetMachine *CreateTargetMachine(CompilerInstance &CI) {
-  const CodeGenOptions &CodeGenOpts = CI.getCodeGenOpts();
-  const TargetOptions &TargetOpts = CI.getTargetOpts();
-
-  std::string Error;
-  std::string Triple = CI.getTarget().getTriple().getTriple();
-  const llvm::Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error);
-  if (!TheTarget) {
-    CI.getDiagnostics().Report(diag::err_fe_unable_to_create_target) << Error;
-    return 0;
-  }
-
-  TargetMachine::setAsmVerbosityDefault(CodeGenOpts.AsmVerbose);
-
-  // FIXME: Parse this earlier.
-  if (CodeGenOpts.RelocationModel == "static") {
-    TargetMachine::setRelocationModel(llvm::Reloc::Static);
-  } else if (CodeGenOpts.RelocationModel == "pic") {
-    TargetMachine::setRelocationModel(llvm::Reloc::PIC_);
-  } else {
-    assert(CodeGenOpts.RelocationModel == "dynamic-no-pic" &&
-           "Invalid PIC model!");
-    TargetMachine::setRelocationModel(llvm::Reloc::DynamicNoPIC);
-  }
-
-  // FIXME: Parse this earlier.
-  if (CodeGenOpts.CodeModel == "small") {
-    TargetMachine::setCodeModel(llvm::CodeModel::Small);
-  } else if (CodeGenOpts.CodeModel == "kernel") {
-    TargetMachine::setCodeModel(llvm::CodeModel::Kernel);
-  } else if (CodeGenOpts.CodeModel == "medium") {
-    TargetMachine::setCodeModel(llvm::CodeModel::Medium);
-  } else if (CodeGenOpts.CodeModel == "large") {
-    TargetMachine::setCodeModel(llvm::CodeModel::Large);
-  } else {
-    assert(CodeGenOpts.CodeModel.empty() && "Invalid code model!");
-    TargetMachine::setCodeModel(llvm::CodeModel::Default);
-  }
-
-  std::string FeaturesStr;
-  if (TargetOpts.CPU.size() || TargetOpts.Features.size()) {
-    SubtargetFeatures Features;
-    Features.setCPU(TargetOpts.CPU);
-    for (std::vector<std::string>::const_iterator
-           it = TargetOpts.Features.begin(),
-           ie = TargetOpts.Features.end(); it != ie; ++it)
-      Features.AddFeature(*it);
-    FeaturesStr = Features.getString();
-  }
-
-  return TheTarget->createTargetMachine(Triple, FeaturesStr);
-}
-
 ASTConsumer *CodeGenAction::CreateASTConsumer(CompilerInstance &CI,
                                               llvm::StringRef InFile) {
-  llvm::OwningPtr<llvm::TargetMachine> TM(CreateTargetMachine(CI));
-  if (!TM)
-    return 0;
-
   BackendAction BA = static_cast<BackendAction>(Act);
   llvm::OwningPtr<llvm::raw_ostream> OS;
   switch (BA) {
@@ -497,15 +485,9 @@ ASTConsumer *CodeGenAction::CreateASTConsumer(CompilerInstance &CI,
   if (BA != Backend_EmitNothing && !OS)
     return 0;
 
-  return new BackendConsumer(BA,
-                             CI.getDiagnostics(),
-                             *TM.take(),
-                             CI.getLangOpts(),
-                             CI.getCodeGenOpts(),
-                             CI.getTargetOpts(),
-                             CI.getFrontendOpts().ShowTimers,
-                             InFile,
-                             OS.take(),
+  return new BackendConsumer(BA, CI.getDiagnostics(), CI.getLangOpts(),
+                             CI.getCodeGenOpts(), CI.getTargetOpts(),
+                             CI.getFrontendOpts().ShowTimers, InFile, OS.take(),
                              CI.getLLVMContext());
 }
 
index aaa4a53ceff41be76b6dffe882e27e2af7c3c9e9..d313a9b3310f68e9b6876dabd7eac33fd6c0959e 100644 (file)
@@ -1,8 +1,6 @@
 // RUN: %clang_cc1 -triple armv7-apple-darwin9 -target-abi apcs-gnu -emit-llvm -w -o - %s | FileCheck -check-prefix=APCS-GNU %s
 // RUN: %clang_cc1 -triple armv7-apple-darwin9 -target-abi aapcs -emit-llvm -w -o - %s | FileCheck -check-prefix=AAPCS %s
 
-// XFAIL: win32
-
 // APCS-GNU: define arm_apcscc signext i8 @f0()
 // AAPCS: define arm_aapcscc signext i8 @f0()
 char f0(void) {
index 0f4b1a68947fb682aa80178d78b8bdac5ac8872c..a7ca0b5332b02e49a5f37dd4d8962e609c43f177 100644 (file)
@@ -1,7 +1,5 @@
 // RUN: %clang_cc1 -triple armv6-unknown-unknown -emit-llvm -o %t %s
 
-// XFAIL: win32
-
 void test0(void) {
        asm volatile("mov r0, r0" :: );
 }
index 842fec947373b81cc35c175d979f5e5ff3296c34..944aac3f521faeb4cb985dae8f0188d93aa70356 100644 (file)
@@ -1,7 +1,5 @@
 // RUN: %clang_cc1 -triple arm-unknown-unknown -emit-llvm -o - %s | FileCheck %s
 
-// XFAIL: win32
-
 // CHECK: declare arm_aapcscc i32 @printf(i8*, ...)
 void f0() {
   printf("a\n");
index d2ff86f6718c6a74c426f202ef0bbf0eed9c322b..555375754959801a2ba87921c27c33444e6184ab 100644 (file)
@@ -1,7 +1,5 @@
 // RUN: %clang_cc1 -triple thumbv7-eabi -target-cpu cortex-a8 -O3 -emit-llvm -o %t %s
 
-// XFAIL: win32
-
 void *f0()
 {
   return __builtin_thread_pointer();
index 70d0857a315d260718883a2e1251c3a814b8fe24..417ca7def5f2bc412b232a59bea494b0748a6dcd 100644 (file)
@@ -162,10 +162,3 @@ void bar() {
 
 }
 // CHECK: }
-
-// CHECK: define void @test0(
-void test0() {
-  // CHECK: i64 7
-  unsigned long long x = __builtin_dwarf_sp_column();
-}
-// CHECK: }
index 823ac41b21b9b98f5fa0c44ef05655175c71a78c..87342956378b31d62230f55eba449a58c8dade65 100644 (file)
@@ -1,7 +1,5 @@
 // RUN: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix LSB %s
 
-// XFAIL: win32
-
 // CHECK-LSB: @.str = private constant [8 x i8] c"string0\00"
 // CHECK-LSB: @.str1 = private constant [8 x i8] c"string1\00"
 // CHECK-LSB: @.str2 = internal constant [36 x i8] c"h\00e\00l\00l\00o\00 \00\92! \00\03& \00\90! \00w\00o\00r\00l\00d\00\00\00", align 2
index bde452afe3a1e6069a28be015b3770ee9bb7fa0f..e48815b96612c5845ab05357c2216724d143a5a9 100644 (file)
@@ -5,8 +5,6 @@
 // We also check _Bool and empty structures, as these can have annoying
 // corner cases.
 
-// XFAIL: win32
-
 // RUN: %clang_cc1 %s -triple i386-unknown-unknown -O3 -emit-llvm -o %t
 // RUN: not grep '@g0' %t
 
index 2349aa3368bb4f30ec3c0b5a83f5a4997a3cdc9b..c9f6f8d88d5931081bedd3bbc0e2024ab9939876 100644 (file)
@@ -1,5 +1,3 @@
-// XFAIL: win32
-
 // RUN: %clang_cc1 -g -triple armv6-apple-darwin9 -emit-llvm -o %t %s
 // RUN: %clang_cc1 -g -triple armv6-unknown-unknown -emit-llvm -o %t %s
 // RUN: %clang_cc1 -g -triple bfin-unknown-unknown -emit-llvm -o %t %s
index 8b9cf2d5efe4da4124ae632fb42d439eee0f3465..97ac4a42a54b3664b3752aa1ef390b372d53a097 100644 (file)
@@ -1,7 +1,5 @@
 // RUN: %clang -ccc-host-triple i386-apple-darwin9 -arch armv7 -flto -S -o - %s | FileCheck %s
 
-// XFAIL: win32
-
 // CHECK: @f0
 // CHECK-NOT: ssp
 // CHECK: ) {