[Mesa-dev] [PATCH] gallium/swr: explicity use llvm legacy FunctionPassManager

Kai Wasserbäch kai at dev.carbon-project.org
Thu Mar 3 17:54:23 UTC 2016


Tim Rowley wrote on 03.03.2016 18:20:
> swr uses the legacy FunctionPassManager for llvm-3.6 compatibility,
> but a change to llvm headers in 3.9 includes the new version as well.
> Explicity use the legacy version to prevent ambiguity.
> ---
>  src/gallium/drivers/swr/rasterizer/jitter/JitManager.h     |  1 -
>  src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp    |  8 +++++++-
>  src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp    | 14 ++++++++++++--
>  .../drivers/swr/rasterizer/jitter/streamout_jit.cpp        |  8 +++++++-
>  4 files changed, 26 insertions(+), 5 deletions(-)
> 
> diff --git a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h
> index c974a61..0f484b7 100644
> --- a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h
> +++ b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h
> @@ -64,7 +64,6 @@
>  #include "llvm/PassManager.h"
>  #else
>  #include "llvm/IR/LegacyPassManager.h"
> -using namespace llvm::legacy;
>  #endif
>  
>  #include "llvm/CodeGen/Passes.h"
> diff --git a/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
> index 954524a..16ccabf 100644
> --- a/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
> @@ -717,7 +717,13 @@ struct BlendJit : public Builder
>  
>          JitManager::DumpToFile(blendFunc, "");
>  
> -        FunctionPassManager passes(JM()->mpCurrentModule);
> +#if LLVM_VERISON_MAJOR == 3 && LLVM_VERSION_MINOR == 6

Why not something like

#IF HAVE_LLVM == 0x0306

like radeonsi is using? (Same applies below.)

Cheers,
Kai


> +        FunctionPassManager
> +#else
> +        llvm::legacy::FunctionPassManager
> +#endif
> +           passes(JM()->mpCurrentModule);
> +
>          passes.add(createBreakCriticalEdgesPass());
>          passes.add(createCFGSimplificationPass());
>          passes.add(createEarlyCSEPass());
> diff --git a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp
> index c5a180e..4965f55 100644
> --- a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp
> @@ -174,7 +174,12 @@ Function* FetchJit::Create(const FETCH_COMPILE_STATE& fetchState)
>  
>      verifyFunction(*fetch);
>  
> -    FunctionPassManager setupPasses(JM()->mpCurrentModule);
> +#if LLVM_VERISON_MAJOR == 3 && LLVM_VERSION_MINOR == 6
> +        FunctionPassManager
> +#else
> +        llvm::legacy::FunctionPassManager
> +#endif
> +           setupPasses(JM()->mpCurrentModule);
>  
>      ///@todo We don't need the CFG passes for fetch. (e.g. BreakCriticalEdges and CFGSimplification)
>      setupPasses.add(createBreakCriticalEdgesPass());
> @@ -186,7 +191,12 @@ Function* FetchJit::Create(const FETCH_COMPILE_STATE& fetchState)
>  
>      JitManager::DumpToFile(fetch, "se");
>  
> -    FunctionPassManager optPasses(JM()->mpCurrentModule);
> +#if LLVM_VERISON_MAJOR == 3 && LLVM_VERSION_MINOR == 6
> +        FunctionPassManager
> +#else
> +        llvm::legacy::FunctionPassManager
> +#endif
> +           optPasses(JM()->mpCurrentModule);
>  
>      ///@todo Haven't touched these either. Need to remove some of these and add others.
>      optPasses.add(createCFGSimplificationPass());
> diff --git a/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
> index 6c5f22b..852d96d 100644
> --- a/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
> @@ -293,7 +293,13 @@ struct StreamOutJit : public Builder
>  
>          JitManager::DumpToFile(soFunc, "SoFunc");
>  
> -        FunctionPassManager passes(JM()->mpCurrentModule);
> +#if LLVM_VERISON_MAJOR == 3 && LLVM_VERSION_MINOR == 6
> +        FunctionPassManager
> +#else
> +        llvm::legacy::FunctionPassManager
> +#endif
> +           passes(JM()->mpCurrentModule);
> +
>          passes.add(createBreakCriticalEdgesPass());
>          passes.add(createCFGSimplificationPass());
>          passes.add(createEarlyCSEPass());

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 630 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160303/0fb752be/attachment.sig>


More information about the mesa-dev mailing list