[PATCH] Fix unresolved linker symbols from misplaced extern definitions

David Majnemer via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 20 15:55:31 PDT 2016


On Fri, Sep 16, 2016 at 8:15 AM, Chuck Atkins via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> ping?
>
> Anybody mind taking a look at this patch?  It's fairly trivial; but
> without it, builds with the Intel compiler fail.
>

What is the failure mode?


>
> On Tue, Sep 13, 2016 at 11:38 AM, Chuck Atkins <chuck.atkins at kitware.com>
> wrote:
>
>> When LCSSAID and LoopSimplifyID are declared extern inside a function
>> body,
>> some linkers will fail to resolve the actual symbols defined in the llvm
>> namespace.  By removing the function local extern declarations and relying
>> on the header definitions in Scalar.h, the symbols can be properly
>> reolved.
>> This is specifically an issue when building with the Intel compiler.
>> ---
>>  lib/Transforms/Utils/LoopUtils.cpp | 3 +--
>>  1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/lib/Transforms/Utils/LoopUtils.cpp
>> b/lib/Transforms/Utils/LoopUtils.cpp
>> index 3902c67..9a1cd0b 100644
>> --- a/lib/Transforms/Utils/LoopUtils.cpp
>> +++ b/lib/Transforms/Utils/LoopUtils.cpp
>> @@ -26,6 +26,7 @@
>>  #include "llvm/IR/ValueHandle.h"
>>  #include "llvm/Pass.h"
>>  #include "llvm/Support/Debug.h"
>> +#include "llvm/Transforms/Scalar.h"
>>  #include "llvm/Transforms/Utils/LoopUtils.h"
>>
>>  using namespace llvm;
>> @@ -845,8 +846,6 @@ void llvm::getLoopAnalysisUsage(AnalysisUsage &AU) {
>>
>>    // We must also preserve LoopSimplify and LCSSA. We locally access
>> their IDs
>>    // here because users shouldn't directly get them from this header.
>> -  extern char &LoopSimplifyID;
>> -  extern char &LCSSAID;
>>    AU.addRequiredID(LoopSimplifyID);
>>    AU.addPreservedID(LoopSimplifyID);
>>    AU.addRequiredID(LCSSAID);
>> --
>> 2.7.4
>>
>>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160920/c0579613/attachment.html>


More information about the llvm-commits mailing list