From ebbe39ffbe9af1fb0d541990352218320cf28466 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Tue, 29 Apr 2014 18:45:01 +0000 Subject: [PATCH] [PCH/Modules] Don't tie TargetOptions::LinkerVersion to a module/PCH, it's a driver only thing and doesn't affect any language/preprocessor/etc. semantics. rdar://16714526 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207570 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Frontend/CompilerInvocation.cpp | 2 +- lib/Frontend/FrontendActions.cpp | 1 - lib/Serialization/ASTReader.cpp | 2 -- lib/Serialization/ASTWriter.cpp | 1 - test/Modules/module_file_info.m | 1 - test/PCH/different-linker-version.c | 17 +++++++++++++++++ 6 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 test/PCH/different-linker-version.c diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index d10edd81ea..4d0c01def1 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -1819,7 +1819,7 @@ std::string CompilerInvocation::getModuleHash() const { // Extend the signature with the target options. code = hash_combine(code, TargetOpts->Triple, TargetOpts->CPU, - TargetOpts->ABI, TargetOpts->LinkerVersion); + TargetOpts->ABI); for (unsigned i = 0, n = TargetOpts->FeaturesAsWritten.size(); i != n; ++i) code = hash_combine(code, TargetOpts->FeaturesAsWritten[i]); diff --git a/lib/Frontend/FrontendActions.cpp b/lib/Frontend/FrontendActions.cpp index a8df7fd1cb..c8b8a21c50 100644 --- a/lib/Frontend/FrontendActions.cpp +++ b/lib/Frontend/FrontendActions.cpp @@ -446,7 +446,6 @@ namespace { Out.indent(4) << " Triple: " << TargetOpts.Triple << "\n"; Out.indent(4) << " CPU: " << TargetOpts.CPU << "\n"; Out.indent(4) << " ABI: " << TargetOpts.ABI << "\n"; - Out.indent(4) << " Linker version: " << TargetOpts.LinkerVersion << "\n"; if (!TargetOpts.FeaturesAsWritten.empty()) { Out.indent(4) << "Target features:\n"; diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index c6aec4592b..ccdf3fe10a 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -219,7 +219,6 @@ static bool checkTargetOptions(const TargetOptions &TargetOpts, CHECK_TARGET_OPT(Triple, "target"); CHECK_TARGET_OPT(CPU, "target CPU"); CHECK_TARGET_OPT(ABI, "target ABI"); - CHECK_TARGET_OPT(LinkerVersion, "target linker version"); #undef CHECK_TARGET_OPT // Compare feature sets. @@ -4583,7 +4582,6 @@ bool ASTReader::ParseTargetOptions(const RecordData &Record, TargetOpts.Triple = ReadString(Record, Idx); TargetOpts.CPU = ReadString(Record, Idx); TargetOpts.ABI = ReadString(Record, Idx); - TargetOpts.LinkerVersion = ReadString(Record, Idx); for (unsigned N = Record[Idx++]; N; --N) { TargetOpts.FeaturesAsWritten.push_back(ReadString(Record, Idx)); } diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index 7402961ae8..11b70e3925 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -1136,7 +1136,6 @@ void ASTWriter::WriteControlBlock(Preprocessor &PP, ASTContext &Context, AddString(TargetOpts.Triple, Record); AddString(TargetOpts.CPU, Record); AddString(TargetOpts.ABI, Record); - AddString(TargetOpts.LinkerVersion, Record); Record.push_back(TargetOpts.FeaturesAsWritten.size()); for (unsigned I = 0, N = TargetOpts.FeaturesAsWritten.size(); I != N; ++I) { AddString(TargetOpts.FeaturesAsWritten[I], Record); diff --git a/test/Modules/module_file_info.m b/test/Modules/module_file_info.m index 13e086ee48..3c10780f25 100644 --- a/test/Modules/module_file_info.m +++ b/test/Modules/module_file_info.m @@ -19,7 +19,6 @@ // CHECK: Triple: // CHECK: CPU: // CHECK: ABI: -// CHECK: Linker version: // CHECK: Diagnostic options: // CHECK: IgnoreWarnings: Yes diff --git a/test/PCH/different-linker-version.c b/test/PCH/different-linker-version.c new file mode 100644 index 0000000000..9e2f38f674 --- /dev/null +++ b/test/PCH/different-linker-version.c @@ -0,0 +1,17 @@ +// RUN: %clang_cc1 -target-linker-version 100 -emit-pch %s -o %t.h.pch +// RUN: %clang_cc1 -target-linker-version 200 %s -include-pch %t.h.pch -fsyntax-only -verify + +#ifndef HEADER +#define HEADER + +extern int foo; + +#else + +void f() { + int a = foo; + // Make sure we parsed this by getting an error. + int b = bar; // expected-error {{undeclared}} +} + +#endif -- 2.40.0