[PATCH] Fix unresolved linker symbols from misplaced extern definitions

Chuck Atkins via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 16 08:15:18 PDT 2016


ping?

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

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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160916/2d1b4db9/attachment.html>


More information about the llvm-commits mailing list