Override the datalayout in a module with -triple.
This matches llc's behavior. Before this patch clang would create a TargetInfo base on -triple but a llvm CodeGen based on the triple in the module. llvm-svn: 197837
This commit is contained in:
parent
d2d1cc5156
commit
d5e81e59b5
|
@ -419,9 +419,18 @@ void CodeGenAction::ExecuteAction() {
|
|||
CI.getDiagnostics().Report(Loc, DiagID);
|
||||
return;
|
||||
}
|
||||
const TargetOptions &TargetOpts = CI.getTargetOpts();
|
||||
if (TheModule->getTargetTriple() != TargetOpts.Triple) {
|
||||
unsigned DiagID = CI.getDiagnostics().getCustomDiagID(
|
||||
DiagnosticsEngine::Warning,
|
||||
"overriding the module target triple with %0");
|
||||
|
||||
CI.getDiagnostics().Report(SourceLocation(), DiagID) << TargetOpts.Triple;
|
||||
TheModule->setTargetTriple(TargetOpts.Triple);
|
||||
}
|
||||
|
||||
EmitBackendOutput(CI.getDiagnostics(), CI.getCodeGenOpts(),
|
||||
CI.getTargetOpts(), CI.getLangOpts(),
|
||||
TargetOpts, CI.getLangOpts(),
|
||||
TheModule.get(),
|
||||
BA, OS);
|
||||
return;
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
; REQUIRES: x86-registered-target
|
||||
; RUN: %clang_cc1 -S -o - %s | FileCheck %s
|
||||
; RUN: %clang_cc1 -triple x86_64-apple-darwin10 -S -o - %s | FileCheck %s
|
||||
|
||||
; RUN: %clang_cc1 -triple x86_64-pc-linux -S -o %t %s 2>&1 | \
|
||||
; RUN: FileCheck --check-prefix=WARN %s
|
||||
; WARN: warning: overriding the module target triple with x86_64-pc-linux
|
||||
; RUN: FileCheck --check-prefix=LINUX %s < %t
|
||||
|
||||
target triple = "x86_64-apple-darwin10"
|
||||
|
||||
; CHECK: .globl _f0
|
||||
; LINUX: .globl f0
|
||||
define i32 @f0() nounwind ssp {
|
||||
ret i32 0
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue