649 changes: 357 additions & 292 deletions clang/lib/Basic/Targets.cpp

Large diffs are not rendered by default.

12 changes: 8 additions & 4 deletions clang/lib/Frontend/ASTUnit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1058,7 +1058,8 @@ bool ASTUnit::Parse(std::shared_ptr<PCHContainerOperations> PCHContainerOps,

// Create the target instance.
Clang->setTarget(TargetInfo::CreateTargetInfo(
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts));
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts,
Clang->getInvocation().getCodeGenOpts()));
if (!Clang->hasTarget())
return true;

Expand Down Expand Up @@ -1518,7 +1519,8 @@ ASTUnit::getMainBufferWithPrecompiledPreamble(

// Create the target instance.
Clang->setTarget(TargetInfo::CreateTargetInfo(
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts));
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts,
Clang->getInvocation().getCodeGenOpts()));
if (!Clang->hasTarget()) {
llvm::sys::fs::remove(FrontendOpts.OutputFile);
Preamble.clear();
Expand Down Expand Up @@ -1781,7 +1783,8 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocationAction(

// Create the target instance.
Clang->setTarget(TargetInfo::CreateTargetInfo(
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts));
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts,
Clang->getInvocation().getCodeGenOpts()));
if (!Clang->hasTarget())
return nullptr;

Expand Down Expand Up @@ -2364,7 +2367,8 @@ void ASTUnit::CodeComplete(

// Create the target instance.
Clang->setTarget(TargetInfo::CreateTargetInfo(
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts));
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts,
Clang->getInvocation().getCodeGenOpts()));
if (!Clang->hasTarget()) {
Clang->setInvocation(nullptr);
return;
Expand Down
3 changes: 2 additions & 1 deletion clang/lib/Frontend/ChainedIncludesSource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,8 @@ IntrusiveRefCntPtr<ExternalSemaSource> clang::createChainedIncludesSource(
Clang->setInvocation(CInvok.release());
Clang->setDiagnostics(Diags.get());
Clang->setTarget(TargetInfo::CreateTargetInfo(
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts));
Clang->getDiagnostics(), Clang->getInvocation().TargetOpts,
Clang->getCodeGenOpts()));
Clang->createFileManager();
Clang->createSourceManager(Clang->getFileManager());
Clang->createPreprocessor(TU_Prefix);
Expand Down
6 changes: 4 additions & 2 deletions clang/lib/Frontend/CompilerInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -830,15 +830,17 @@ bool CompilerInstance::ExecuteAction(FrontendAction &Act) {

// Create the target instance.
setTarget(TargetInfo::CreateTargetInfo(getDiagnostics(),
getInvocation().TargetOpts));
getInvocation().TargetOpts,
getInvocation().getCodeGenOpts()));
if (!hasTarget())
return false;

// Create TargetInfo for the other side of CUDA compilation.
if (getLangOpts().CUDA && !getFrontendOpts().AuxTriple.empty()) {
std::shared_ptr<TargetOptions> TO(new TargetOptions);
TO->Triple = getFrontendOpts().AuxTriple;
setAuxTarget(TargetInfo::CreateTargetInfo(getDiagnostics(), TO));
setAuxTarget(TargetInfo::CreateTargetInfo(getDiagnostics(), TO,
getInvocation().getCodeGenOpts()));
}

// Inform the target of the language options.
Expand Down
1 change: 1 addition & 0 deletions clang/unittests/Basic/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ add_clang_unittest(BasicTests

target_link_libraries(BasicTests
clangBasic
clangFrontend
clangLex
)
1 change: 1 addition & 0 deletions clang/unittests/Lex/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ add_clang_unittest(LexTests
target_link_libraries(LexTests
clangAST
clangBasic
clangFrontend
clangLex
clangParse
clangSema
Expand Down