forked from OSchip/llvm-project
Module: Do not add any link flags when an implementation TU of a module imports
a header of that same module. This fixes a regression caused by r280409. rdar://problem/29930553 This is an updated version for r291628 (which was reverted in r291688). llvm-svn: 291689
This commit is contained in:
parent
3e9dea024e
commit
9803ee8e9a
|
@ -1243,9 +1243,15 @@ void CodeGenModule::EmitModuleLinkOptions() {
|
|||
SmallVector<clang::Module *, 16> Stack;
|
||||
|
||||
// Seed the stack with imported modules.
|
||||
for (Module *M : ImportedModules)
|
||||
for (Module *M : ImportedModules) {
|
||||
// Do not add any link flags when an implementation TU of a module imports
|
||||
// a header of that same module.
|
||||
if (M->getTopLevelModuleName() == getLangOpts().CurrentModule &&
|
||||
!getLangOpts().isCompilingModule())
|
||||
continue;
|
||||
if (Visited.insert(M).second)
|
||||
Stack.push_back(M);
|
||||
}
|
||||
|
||||
// Find all of the modules to import, making a little effort to prune
|
||||
// non-leaf modules.
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
//empty
|
|
@ -0,0 +1,4 @@
|
|||
module Clib {
|
||||
header "foo.h"
|
||||
link "Clib"
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
// RUN: rm -rf %t
|
||||
// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -fmodule-name=Clib %s -I %S/Inputs/module-impl-with-link -emit-llvm -o -
|
||||
#include "foo.h"
|
||||
// CHECK: !{{[0-9]+}} = !{i32 6, !"Linker Options", ![[LINK_OPTIONS:[0-9]+]]}
|
||||
// Make sure we don't generate linker option for module Clib since this TU is
|
||||
// an implementation of Clib.
|
||||
// CHECK: ![[LINK_OPTIONS]] = !{}
|
Loading…
Reference in New Issue