r197837 - Override the datalayout in a module with -triple.
Rafael Espindola
rafael.espindola at gmail.com
Fri Dec 20 14:01:25 PST 2013
Author: rafael
Date: Fri Dec 20 16:01:25 2013
New Revision: 197837
URL: http://llvm.org/viewvc/llvm-project?rev=197837&view=rev
Log:
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.
Modified:
cfe/trunk/lib/CodeGen/CodeGenAction.cpp
cfe/trunk/test/Frontend/ir-support-codegen.ll
Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=197837&r1=197836&r2=197837&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Fri Dec 20 16:01:25 2013
@@ -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;
Modified: cfe/trunk/test/Frontend/ir-support-codegen.ll
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/ir-support-codegen.ll?rev=197837&r1=197836&r2=197837&view=diff
==============================================================================
--- cfe/trunk/test/Frontend/ir-support-codegen.ll (original)
+++ cfe/trunk/test/Frontend/ir-support-codegen.ll Fri Dec 20 16:01:25 2013
@@ -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
}
More information about the cfe-commits
mailing list