Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-22 Thread Tom Stellard
On Thu, Feb 21, 2013 at 08:25:20AM -0600, Aaron Watry wrote:
 Hi Tom,
 
 Mesa+Clover does indeed build against master llvm/clang, but I'm having
 trouble building against it when I try to do a clean build of Piglit.
 
 Error received:
 
 [ 18%] Built target piglitutil_cl
 Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
 /usr/local/lib/libOpenCL.so: undefined reference to
 `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
 const'
 /usr/local/lib/libOpenCL.so: undefined reference to
 `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
 const'
 collect2: error: ld returned 1 exit status
 make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
 make[1]: ***
 [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
 Error 2
 make: *** [all] Error 2
 
 Maybe I've done something wrong, but I've tested this on two machines now
 and both times I've wiped my llvm/clang/mesa/clover installs in /usr/local
 and rebuilt from scratch.
 

I've sent a v2 of this patch that should fix this.  The dependencies between
clang libraries changed so I had to change the order that they were passed to
the linker.

-Tom

 --Aaron
 
 On Wed, Feb 20, 2013 at 4:27 PM, Tom Stellard t...@stellard.net wrote:
 
  From: Tom Stellard thomas.stell...@amd.com
 
  ---
   .../state_trackers/clover/llvm/invocation.cpp  |   47
  ---
   1 files changed, 39 insertions(+), 8 deletions(-)
 
  diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
  b/src/gallium/state_trackers/clover/llvm/invocation.cpp
  index 0bd8e22..2785d10 100644
  --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
  +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
  @@ -28,10 +28,17 @@
   #include clang/CodeGen/CodeGenAction.h
   #include llvm/Bitcode/BitstreamWriter.h
   #include llvm/Bitcode/ReaderWriter.h
  -#include llvm/DerivedTypes.h
   #include llvm/Linker.h
  +#if HAVE_LLVM  0x0303
  +#include llvm/DerivedTypes.h
   #include llvm/LLVMContext.h
   #include llvm/Module.h
  +#else
  +#include llvm/IR/DerivedTypes.h
  +#include llvm/IR/LLVMContext.h
  +#include llvm/IR/Module.h
  +#include llvm/Support/IRReader.h
  +#endif
   #include llvm/PassManager.h
   #include llvm/Support/TargetSelect.h
   #include llvm/Support/MemoryBuffer.h
  @@ -41,8 +48,10 @@
 
   #if HAVE_LLVM  0x0302
   #include llvm/Target/TargetData.h
  -#else
  +#elif HAVE_LLVM  0x0303
   #include llvm/DataLayout.h
  +#else
  +#include llvm/IR/DataLayout.h
   #endif
 
   #include pipe/p_state.h
  @@ -151,7 +160,11 @@ namespace {
 // Add libclc generic search path
 c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
 clang::frontend::Angled,
  -  false, false, false);
  +  false, false
  +#if HAVE_LLVM  0x0303
  +  , false
  +#endif
  +  );
 
 // Add libclc include
 c.getPreprocessorOpts().Includes.push_back(clc/clc.h);
  @@ -167,8 +180,12 @@ namespace {
 c.getInvocation().setLangDefaults(c.getLangOpts(), clang::IK_OpenCL,
 
   clang::LangStandard::lang_opencl11);
   #endif
  -  c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(
  -  s_log,
  +  c.createDiagnostics(
  +#if HAVE_LLVM  0x0303
  +  0, NULL,
  +#endif
  +  new clang::TextDiagnosticPrinter(
  + s_log,
   #if HAVE_LLVM = 0x0301
c.getDiagnosticOpts()));
   #else
  @@ -201,12 +218,26 @@ namespace {
 
 llvm::PassManager PM;
 llvm::PassManagerBuilder Builder;
  -  bool isNative;
  -  llvm::Linker linker(clover, mod);
  +  llvm::sys::Path libclc_path =
  +llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +
  .bc);
 
 // Link the kernel with libclc
  -  linker.LinkInFile(llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +
  .bc), isNative);
  +#if HAVE_LLVM  0x0303
  +  bool isNative;
  +  llvm::Linker linker(clover, mod);
  +  linker.LinkInFile(libclc_path, isNative);
 mod = linker.releaseModule();
  +#else
  +  std::string err_str;
  +  llvm::SMDiagnostic err;
  +  llvm::Module *libclc_mod = llvm::ParseIRFile(libclc_path.str(), err,
  +   mod-getContext());
  +  if (llvm::Linker::LinkModules(mod, libclc_mod,
  +llvm::Linker::DestroySource,
  +err_str)) {
  + throw build_error(err_str);
  +  }
  +#endif
 
 // Add a function internalizer pass.
 //
  --
  1.7.8.6
 
  ___
  mesa-dev mailing list
  mesa-dev@lists.freedesktop.org
  

Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-22 Thread Aaron Watry
On Fri, Feb 22, 2013 at 12:21 PM, Tom Stellard t...@stellard.net wrote:

 On Thu, Feb 21, 2013 at 08:25:20AM -0600, Aaron Watry wrote:
  Hi Tom,
 
  Mesa+Clover does indeed build against master llvm/clang, but I'm having
  trouble building against it when I try to do a clean build of Piglit.
 
  Error received:
 
  [ 18%] Built target piglitutil_cl
  Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
  /usr/local/lib/libOpenCL.so: undefined reference to
 
 `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
  const'
  /usr/local/lib/libOpenCL.so: undefined reference to
 
 `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
  const'
  collect2: error: ld returned 1 exit status
  make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
  make[1]: ***
 
 [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
  Error 2
  make: *** [all] Error 2
 
  Maybe I've done something wrong, but I've tested this on two machines now
  and both times I've wiped my llvm/clang/mesa/clover installs in
 /usr/local
  and rebuilt from scratch.
 

 I've sent a v2 of this patch that should fix this.  The dependencies
 between
 clang libraries changed so I had to change the order that they were passed
 to
 the linker.


That seems to have done the trick.  Piglit now builds correctly on the
machine that I have available here to test with (one that was failing
yesterday with v1).  I can do a full piglit GL/CL test run once I get home
if needed.

--Aaron


 -Tom

  --Aaron
 
  On Wed, Feb 20, 2013 at 4:27 PM, Tom Stellard t...@stellard.net wrote:
 
   From: Tom Stellard thomas.stell...@amd.com
  
   ---
.../state_trackers/clover/llvm/invocation.cpp  |   47
   ---
1 files changed, 39 insertions(+), 8 deletions(-)
  
   diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
   b/src/gallium/state_trackers/clover/llvm/invocation.cpp
   index 0bd8e22..2785d10 100644
   --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
   +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
   @@ -28,10 +28,17 @@
#include clang/CodeGen/CodeGenAction.h
#include llvm/Bitcode/BitstreamWriter.h
#include llvm/Bitcode/ReaderWriter.h
   -#include llvm/DerivedTypes.h
#include llvm/Linker.h
   +#if HAVE_LLVM  0x0303
   +#include llvm/DerivedTypes.h
#include llvm/LLVMContext.h
#include llvm/Module.h
   +#else
   +#include llvm/IR/DerivedTypes.h
   +#include llvm/IR/LLVMContext.h
   +#include llvm/IR/Module.h
   +#include llvm/Support/IRReader.h
   +#endif
#include llvm/PassManager.h
#include llvm/Support/TargetSelect.h
#include llvm/Support/MemoryBuffer.h
   @@ -41,8 +48,10 @@
  
#if HAVE_LLVM  0x0302
#include llvm/Target/TargetData.h
   -#else
   +#elif HAVE_LLVM  0x0303
#include llvm/DataLayout.h
   +#else
   +#include llvm/IR/DataLayout.h
#endif
  
#include pipe/p_state.h
   @@ -151,7 +160,11 @@ namespace {
  // Add libclc generic search path
  c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
  clang::frontend::Angled,
   -  false, false, false);
   +  false, false
   +#if HAVE_LLVM  0x0303
   +  , false
   +#endif
   +  );
  
  // Add libclc include
  c.getPreprocessorOpts().Includes.push_back(clc/clc.h);
   @@ -167,8 +180,12 @@ namespace {
  c.getInvocation().setLangDefaults(c.getLangOpts(),
 clang::IK_OpenCL,
  
clang::LangStandard::lang_opencl11);
#endif
   -  c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(
   -  s_log,
   +  c.createDiagnostics(
   +#if HAVE_LLVM  0x0303
   +  0, NULL,
   +#endif
   +  new clang::TextDiagnosticPrinter(
   + s_log,
#if HAVE_LLVM = 0x0301
 c.getDiagnosticOpts()));
#else
   @@ -201,12 +218,26 @@ namespace {
  
  llvm::PassManager PM;
  llvm::PassManagerBuilder Builder;
   -  bool isNative;
   -  llvm::Linker linker(clover, mod);
   +  llvm::sys::Path libclc_path =
   +llvm::sys::Path(LIBCLC_LIBEXECDIR +
 triple +
   .bc);
  
  // Link the kernel with libclc
   -  linker.LinkInFile(llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +
   .bc), isNative);
   +#if HAVE_LLVM  0x0303
   +  bool isNative;
   +  llvm::Linker linker(clover, mod);
   +  linker.LinkInFile(libclc_path, isNative);
  mod = linker.releaseModule();
   +#else
   +  std::string err_str;
   +  llvm::SMDiagnostic err;
   +  llvm::Module *libclc_mod = llvm::ParseIRFile(libclc_path.str(),
 err,
   +

Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-21 Thread Francisco Jerez
Tom Stellard t...@stellard.net writes:

 From: Tom Stellard thomas.stell...@amd.com

Acked-by: Francisco Jerez curroje...@riseup.net

 ---
  .../state_trackers/clover/llvm/invocation.cpp  |   47 ---
  1 files changed, 39 insertions(+), 8 deletions(-)

 diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp 
 b/src/gallium/state_trackers/clover/llvm/invocation.cpp
 index 0bd8e22..2785d10 100644
 --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
 +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
 @@ -28,10 +28,17 @@
  #include clang/CodeGen/CodeGenAction.h
  #include llvm/Bitcode/BitstreamWriter.h
  #include llvm/Bitcode/ReaderWriter.h
 -#include llvm/DerivedTypes.h
  #include llvm/Linker.h
 +#if HAVE_LLVM  0x0303
 +#include llvm/DerivedTypes.h
  #include llvm/LLVMContext.h
  #include llvm/Module.h
 +#else
 +#include llvm/IR/DerivedTypes.h
 +#include llvm/IR/LLVMContext.h
 +#include llvm/IR/Module.h
 +#include llvm/Support/IRReader.h
 +#endif
  #include llvm/PassManager.h
  #include llvm/Support/TargetSelect.h
  #include llvm/Support/MemoryBuffer.h
 @@ -41,8 +48,10 @@
  
  #if HAVE_LLVM  0x0302
  #include llvm/Target/TargetData.h
 -#else
 +#elif HAVE_LLVM  0x0303
  #include llvm/DataLayout.h
 +#else
 +#include llvm/IR/DataLayout.h
  #endif
  
  #include pipe/p_state.h
 @@ -151,7 +160,11 @@ namespace {
// Add libclc generic search path
c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
clang::frontend::Angled,
 -  false, false, false);
 +  false, false
 +#if HAVE_LLVM  0x0303
 +  , false
 +#endif
 +  );
  
// Add libclc include
c.getPreprocessorOpts().Includes.push_back(clc/clc.h);
 @@ -167,8 +180,12 @@ namespace {
c.getInvocation().setLangDefaults(c.getLangOpts(), clang::IK_OpenCL,
  clang::LangStandard::lang_opencl11);
  #endif
 -  c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(
 -  s_log,
 +  c.createDiagnostics(
 +#if HAVE_LLVM  0x0303
 +  0, NULL,
 +#endif
 +  new clang::TextDiagnosticPrinter(
 + s_log,
  #if HAVE_LLVM = 0x0301
   c.getDiagnosticOpts()));
  #else
 @@ -201,12 +218,26 @@ namespace {
  
llvm::PassManager PM;
llvm::PassManagerBuilder Builder;
 -  bool isNative;
 -  llvm::Linker linker(clover, mod);
 +  llvm::sys::Path libclc_path =
 +llvm::sys::Path(LIBCLC_LIBEXECDIR + triple + 
 .bc);
  
// Link the kernel with libclc
 -  linker.LinkInFile(llvm::sys::Path(LIBCLC_LIBEXECDIR + triple + .bc), 
 isNative);
 +#if HAVE_LLVM  0x0303
 +  bool isNative;
 +  llvm::Linker linker(clover, mod);
 +  linker.LinkInFile(libclc_path, isNative);
mod = linker.releaseModule();
 +#else
 +  std::string err_str;
 +  llvm::SMDiagnostic err;
 +  llvm::Module *libclc_mod = llvm::ParseIRFile(libclc_path.str(), err,
 +   mod-getContext());
 +  if (llvm::Linker::LinkModules(mod, libclc_mod,
 +llvm::Linker::DestroySource,
 +err_str)) {
 + throw build_error(err_str);
 +  }
 +#endif
  
// Add a function internalizer pass.
//


pgpVVk4rFkOM3.pgp
Description: PGP signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-21 Thread Aaron Watry
Hi Tom,

Mesa+Clover does indeed build against master llvm/clang, but I'm having
trouble building against it when I try to do a clean build of Piglit.

Error received:

[ 18%] Built target piglitutil_cl
Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
/usr/local/lib/libOpenCL.so: undefined reference to
`clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
const'
/usr/local/lib/libOpenCL.so: undefined reference to
`clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
const'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
make[1]: ***
[target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
Error 2
make: *** [all] Error 2

Maybe I've done something wrong, but I've tested this on two machines now
and both times I've wiped my llvm/clang/mesa/clover installs in /usr/local
and rebuilt from scratch.

--Aaron

On Wed, Feb 20, 2013 at 4:27 PM, Tom Stellard t...@stellard.net wrote:

 From: Tom Stellard thomas.stell...@amd.com

 ---
  .../state_trackers/clover/llvm/invocation.cpp  |   47
 ---
  1 files changed, 39 insertions(+), 8 deletions(-)

 diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
 b/src/gallium/state_trackers/clover/llvm/invocation.cpp
 index 0bd8e22..2785d10 100644
 --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
 +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
 @@ -28,10 +28,17 @@
  #include clang/CodeGen/CodeGenAction.h
  #include llvm/Bitcode/BitstreamWriter.h
  #include llvm/Bitcode/ReaderWriter.h
 -#include llvm/DerivedTypes.h
  #include llvm/Linker.h
 +#if HAVE_LLVM  0x0303
 +#include llvm/DerivedTypes.h
  #include llvm/LLVMContext.h
  #include llvm/Module.h
 +#else
 +#include llvm/IR/DerivedTypes.h
 +#include llvm/IR/LLVMContext.h
 +#include llvm/IR/Module.h
 +#include llvm/Support/IRReader.h
 +#endif
  #include llvm/PassManager.h
  #include llvm/Support/TargetSelect.h
  #include llvm/Support/MemoryBuffer.h
 @@ -41,8 +48,10 @@

  #if HAVE_LLVM  0x0302
  #include llvm/Target/TargetData.h
 -#else
 +#elif HAVE_LLVM  0x0303
  #include llvm/DataLayout.h
 +#else
 +#include llvm/IR/DataLayout.h
  #endif

  #include pipe/p_state.h
 @@ -151,7 +160,11 @@ namespace {
// Add libclc generic search path
c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
clang::frontend::Angled,
 -  false, false, false);
 +  false, false
 +#if HAVE_LLVM  0x0303
 +  , false
 +#endif
 +  );

// Add libclc include
c.getPreprocessorOpts().Includes.push_back(clc/clc.h);
 @@ -167,8 +180,12 @@ namespace {
c.getInvocation().setLangDefaults(c.getLangOpts(), clang::IK_OpenCL,

  clang::LangStandard::lang_opencl11);
  #endif
 -  c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(
 -  s_log,
 +  c.createDiagnostics(
 +#if HAVE_LLVM  0x0303
 +  0, NULL,
 +#endif
 +  new clang::TextDiagnosticPrinter(
 + s_log,
  #if HAVE_LLVM = 0x0301
   c.getDiagnosticOpts()));
  #else
 @@ -201,12 +218,26 @@ namespace {

llvm::PassManager PM;
llvm::PassManagerBuilder Builder;
 -  bool isNative;
 -  llvm::Linker linker(clover, mod);
 +  llvm::sys::Path libclc_path =
 +llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +
 .bc);

// Link the kernel with libclc
 -  linker.LinkInFile(llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +
 .bc), isNative);
 +#if HAVE_LLVM  0x0303
 +  bool isNative;
 +  llvm::Linker linker(clover, mod);
 +  linker.LinkInFile(libclc_path, isNative);
mod = linker.releaseModule();
 +#else
 +  std::string err_str;
 +  llvm::SMDiagnostic err;
 +  llvm::Module *libclc_mod = llvm::ParseIRFile(libclc_path.str(), err,
 +   mod-getContext());
 +  if (llvm::Linker::LinkModules(mod, libclc_mod,
 +llvm::Linker::DestroySource,
 +err_str)) {
 + throw build_error(err_str);
 +  }
 +#endif

// Add a function internalizer pass.
//
 --
 1.7.8.6

 ___
 mesa-dev mailing list
 mesa-dev@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/mesa-dev

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-21 Thread Tom Stellard
On Thu, Feb 21, 2013 at 08:25:20AM -0600, Aaron Watry wrote:
 Hi Tom,
 
 Mesa+Clover does indeed build against master llvm/clang, but I'm having
 trouble building against it when I try to do a clean build of Piglit.
 
 Error received:
 
 [ 18%] Built target piglitutil_cl
 Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
 /usr/local/lib/libOpenCL.so: undefined reference to
 `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
 const'
 /usr/local/lib/libOpenCL.so: undefined reference to
 `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
 const'
 collect2: error: ld returned 1 exit status
 make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
 make[1]: ***
 [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
 Error 2
 make: *** [all] Error 2
 
 Maybe I've done something wrong, but I've tested this on two machines now
 and both times I've wiped my llvm/clang/mesa/clover installs in /usr/local
 and rebuilt from scratch.
 

Which revisions of Clang and LLVM are you using?

-Tom

 --Aaron
 
 On Wed, Feb 20, 2013 at 4:27 PM, Tom Stellard t...@stellard.net wrote:
 
  From: Tom Stellard thomas.stell...@amd.com
 
  ---
   .../state_trackers/clover/llvm/invocation.cpp  |   47
  ---
   1 files changed, 39 insertions(+), 8 deletions(-)
 
  diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
  b/src/gallium/state_trackers/clover/llvm/invocation.cpp
  index 0bd8e22..2785d10 100644
  --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
  +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
  @@ -28,10 +28,17 @@
   #include clang/CodeGen/CodeGenAction.h
   #include llvm/Bitcode/BitstreamWriter.h
   #include llvm/Bitcode/ReaderWriter.h
  -#include llvm/DerivedTypes.h
   #include llvm/Linker.h
  +#if HAVE_LLVM  0x0303
  +#include llvm/DerivedTypes.h
   #include llvm/LLVMContext.h
   #include llvm/Module.h
  +#else
  +#include llvm/IR/DerivedTypes.h
  +#include llvm/IR/LLVMContext.h
  +#include llvm/IR/Module.h
  +#include llvm/Support/IRReader.h
  +#endif
   #include llvm/PassManager.h
   #include llvm/Support/TargetSelect.h
   #include llvm/Support/MemoryBuffer.h
  @@ -41,8 +48,10 @@
 
   #if HAVE_LLVM  0x0302
   #include llvm/Target/TargetData.h
  -#else
  +#elif HAVE_LLVM  0x0303
   #include llvm/DataLayout.h
  +#else
  +#include llvm/IR/DataLayout.h
   #endif
 
   #include pipe/p_state.h
  @@ -151,7 +160,11 @@ namespace {
 // Add libclc generic search path
 c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
 clang::frontend::Angled,
  -  false, false, false);
  +  false, false
  +#if HAVE_LLVM  0x0303
  +  , false
  +#endif
  +  );
 
 // Add libclc include
 c.getPreprocessorOpts().Includes.push_back(clc/clc.h);
  @@ -167,8 +180,12 @@ namespace {
 c.getInvocation().setLangDefaults(c.getLangOpts(), clang::IK_OpenCL,
 
   clang::LangStandard::lang_opencl11);
   #endif
  -  c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(
  -  s_log,
  +  c.createDiagnostics(
  +#if HAVE_LLVM  0x0303
  +  0, NULL,
  +#endif
  +  new clang::TextDiagnosticPrinter(
  + s_log,
   #if HAVE_LLVM = 0x0301
c.getDiagnosticOpts()));
   #else
  @@ -201,12 +218,26 @@ namespace {
 
 llvm::PassManager PM;
 llvm::PassManagerBuilder Builder;
  -  bool isNative;
  -  llvm::Linker linker(clover, mod);
  +  llvm::sys::Path libclc_path =
  +llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +
  .bc);
 
 // Link the kernel with libclc
  -  linker.LinkInFile(llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +
  .bc), isNative);
  +#if HAVE_LLVM  0x0303
  +  bool isNative;
  +  llvm::Linker linker(clover, mod);
  +  linker.LinkInFile(libclc_path, isNative);
 mod = linker.releaseModule();
  +#else
  +  std::string err_str;
  +  llvm::SMDiagnostic err;
  +  llvm::Module *libclc_mod = llvm::ParseIRFile(libclc_path.str(), err,
  +   mod-getContext());
  +  if (llvm::Linker::LinkModules(mod, libclc_mod,
  +llvm::Linker::DestroySource,
  +err_str)) {
  + throw build_error(err_str);
  +  }
  +#endif
 
 // Add a function internalizer pass.
 //
  --
  1.7.8.6
 
  ___
  mesa-dev mailing list
  mesa-dev@lists.freedesktop.org
  http://lists.freedesktop.org/mailman/listinfo/mesa-dev
 
___
mesa-dev 

Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-21 Thread Aaron Watry
On Thu, Feb 21, 2013 at 8:33 AM, Tom Stellard t...@stellard.net wrote:

 On Thu, Feb 21, 2013 at 08:25:20AM -0600, Aaron Watry wrote:
  Hi Tom,
 
  Mesa+Clover does indeed build against master llvm/clang, but I'm having
  trouble building against it when I try to do a clean build of Piglit.
 
  Error received:
 
  [ 18%] Built target piglitutil_cl
  Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
  /usr/local/lib/libOpenCL.so: undefined reference to
 
 `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
  const'
  /usr/local/lib/libOpenCL.so: undefined reference to
 
 `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
  const'
  collect2: error: ld returned 1 exit status
  make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
  make[1]: ***
 
 [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
  Error 2
  make: *** [all] Error 2
 
  Maybe I've done something wrong, but I've tested this on two machines now
  and both times I've wiped my llvm/clang/mesa/clover installs in
 /usr/local
  and rebuilt from scratch.
 

 Which revisions of Clang and LLVM are you using?


I'm not at home at the moment, so I don't have access to those machines,
but from memory:

LLVM was git master as of sometime around 6-8pm CST last night.  One such
revision would be
commit ffbe432595c78ba28c8a9d200bf92996eed5e5d9
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175718 91177308-0d3


Clang was somewhere between 3bc7b6bef96 and dc84cd5efdd3430efb.

I just retested on another machine with the following versions:
LLVM: git: 0514595b9b20c9d80, svn: 175739
Clang: 7d81281fc39f6d, svn: 175741
Mesa: b63b3012c91 with your clover patch

Result:
Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
/usr/local/lib/libOpenCL.so: undefined reference to
`clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
const'
/usr/local/lib/libOpenCL.so: undefined reference to
`clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
const'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
make[1]: ***
[target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
Error 2
make: *** [all] Error 2

--Aaron


 -Tom

  --Aaron
 
  On Wed, Feb 20, 2013 at 4:27 PM, Tom Stellard t...@stellard.net wrote:
 
   From: Tom Stellard thomas.stell...@amd.com
  
   ---
.../state_trackers/clover/llvm/invocation.cpp  |   47
   ---
1 files changed, 39 insertions(+), 8 deletions(-)
  
   diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
   b/src/gallium/state_trackers/clover/llvm/invocation.cpp
   index 0bd8e22..2785d10 100644
   --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
   +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
   @@ -28,10 +28,17 @@
#include clang/CodeGen/CodeGenAction.h
#include llvm/Bitcode/BitstreamWriter.h
#include llvm/Bitcode/ReaderWriter.h
   -#include llvm/DerivedTypes.h
#include llvm/Linker.h
   +#if HAVE_LLVM  0x0303
   +#include llvm/DerivedTypes.h
#include llvm/LLVMContext.h
#include llvm/Module.h
   +#else
   +#include llvm/IR/DerivedTypes.h
   +#include llvm/IR/LLVMContext.h
   +#include llvm/IR/Module.h
   +#include llvm/Support/IRReader.h
   +#endif
#include llvm/PassManager.h
#include llvm/Support/TargetSelect.h
#include llvm/Support/MemoryBuffer.h
   @@ -41,8 +48,10 @@
  
#if HAVE_LLVM  0x0302
#include llvm/Target/TargetData.h
   -#else
   +#elif HAVE_LLVM  0x0303
#include llvm/DataLayout.h
   +#else
   +#include llvm/IR/DataLayout.h
#endif
  
#include pipe/p_state.h
   @@ -151,7 +160,11 @@ namespace {
  // Add libclc generic search path
  c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
  clang::frontend::Angled,
   -  false, false, false);
   +  false, false
   +#if HAVE_LLVM  0x0303
   +  , false
   +#endif
   +  );
  
  // Add libclc include
  c.getPreprocessorOpts().Includes.push_back(clc/clc.h);
   @@ -167,8 +180,12 @@ namespace {
  c.getInvocation().setLangDefaults(c.getLangOpts(),
 clang::IK_OpenCL,
  
clang::LangStandard::lang_opencl11);
#endif
   -  c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(
   -  s_log,
   +  c.createDiagnostics(
   +#if HAVE_LLVM  0x0303
   +  0, NULL,
   +#endif
   +  new clang::TextDiagnosticPrinter(
   + s_log,
#if HAVE_LLVM = 0x0301
 c.getDiagnosticOpts()));
#else
   @@ -201,12 +218,26 @@ 

Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-21 Thread Tom Stellard
On Thu, Feb 21, 2013 at 10:02:34AM -0600, Aaron Watry wrote:
 On Thu, Feb 21, 2013 at 8:33 AM, Tom Stellard t...@stellard.net wrote:
 
  On Thu, Feb 21, 2013 at 08:25:20AM -0600, Aaron Watry wrote:
   Hi Tom,
  
   Mesa+Clover does indeed build against master llvm/clang, but I'm having
   trouble building against it when I try to do a clean build of Piglit.
  
   Error received:
  
   [ 18%] Built target piglitutil_cl
   Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
   /usr/local/lib/libOpenCL.so: undefined reference to
  
  `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
   const'
   /usr/local/lib/libOpenCL.so: undefined reference to
  
  `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
   const'
   collect2: error: ld returned 1 exit status
   make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
   make[1]: ***
  
  [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
   Error 2
   make: *** [all] Error 2
  
   Maybe I've done something wrong, but I've tested this on two machines now
   and both times I've wiped my llvm/clang/mesa/clover installs in
  /usr/local
   and rebuilt from scratch.
  
 
  Which revisions of Clang and LLVM are you using?
 
 
 I'm not at home at the moment, so I don't have access to those machines,
 but from memory:
 
 LLVM was git master as of sometime around 6-8pm CST last night.  One such
 revision would be
 commit ffbe432595c78ba28c8a9d200bf92996eed5e5d9
 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175718 91177308-0d3
 
 
 Clang was somewhere between 3bc7b6bef96 and dc84cd5efdd3430efb.
 
 I just retested on another machine with the following versions:
 LLVM: git: 0514595b9b20c9d80, svn: 175739
 Clang: 7d81281fc39f6d, svn: 175741
 Mesa: b63b3012c91 with your clover patch
 
 Result:
 Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
 /usr/local/lib/libOpenCL.so: undefined reference to
 `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
 const'
 /usr/local/lib/libOpenCL.so: undefined reference to
 `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
 const'
 collect2: error: ld returned 1 exit status
 make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
 make[1]: ***
 [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
 Error 2
 make: *** [all] Error 2
 

Did you re-configure and run make clean for piglit?

-Tom
 
 
  -Tom
 
   --Aaron
  
   On Wed, Feb 20, 2013 at 4:27 PM, Tom Stellard t...@stellard.net wrote:
  
From: Tom Stellard thomas.stell...@amd.com
   
---
 .../state_trackers/clover/llvm/invocation.cpp  |   47
---
 1 files changed, 39 insertions(+), 8 deletions(-)
   
diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
b/src/gallium/state_trackers/clover/llvm/invocation.cpp
index 0bd8e22..2785d10 100644
--- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
@@ -28,10 +28,17 @@
 #include clang/CodeGen/CodeGenAction.h
 #include llvm/Bitcode/BitstreamWriter.h
 #include llvm/Bitcode/ReaderWriter.h
-#include llvm/DerivedTypes.h
 #include llvm/Linker.h
+#if HAVE_LLVM  0x0303
+#include llvm/DerivedTypes.h
 #include llvm/LLVMContext.h
 #include llvm/Module.h
+#else
+#include llvm/IR/DerivedTypes.h
+#include llvm/IR/LLVMContext.h
+#include llvm/IR/Module.h
+#include llvm/Support/IRReader.h
+#endif
 #include llvm/PassManager.h
 #include llvm/Support/TargetSelect.h
 #include llvm/Support/MemoryBuffer.h
@@ -41,8 +48,10 @@
   
 #if HAVE_LLVM  0x0302
 #include llvm/Target/TargetData.h
-#else
+#elif HAVE_LLVM  0x0303
 #include llvm/DataLayout.h
+#else
+#include llvm/IR/DataLayout.h
 #endif
   
 #include pipe/p_state.h
@@ -151,7 +160,11 @@ namespace {
   // Add libclc generic search path
   c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
   clang::frontend::Angled,
-  false, false, false);
+  false, false
+#if HAVE_LLVM  0x0303
+  , false
+#endif
+  );
   
   // Add libclc include
   c.getPreprocessorOpts().Includes.push_back(clc/clc.h);
@@ -167,8 +180,12 @@ namespace {
   c.getInvocation().setLangDefaults(c.getLangOpts(),
  clang::IK_OpenCL,
   
 clang::LangStandard::lang_opencl11);
 #endif
-  c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(
-  s_log,
+  c.createDiagnostics(
+#if HAVE_LLVM  0x0303
+  

Re: [Mesa-dev] [PATCH] clover: Fix build with LLVM 3.3

2013-02-21 Thread Aaron Watry
On Thu, Feb 21, 2013 at 10:06 AM, Tom Stellard t...@stellard.net wrote:

 On Thu, Feb 21, 2013 at 10:02:34AM -0600, Aaron Watry wrote:
  On Thu, Feb 21, 2013 at 8:33 AM, Tom Stellard t...@stellard.net wrote:
 
   On Thu, Feb 21, 2013 at 08:25:20AM -0600, Aaron Watry wrote:
Hi Tom,
   
Mesa+Clover does indeed build against master llvm/clang, but I'm
 having
trouble building against it when I try to do a clean build of Piglit.
   
Error received:
   
[ 18%] Built target piglitutil_cl
Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
/usr/local/lib/libOpenCL.so: undefined reference to
   
  
 `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
const'
/usr/local/lib/libOpenCL.so: undefined reference to
   
  
 `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
const'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
make[1]: ***
   
  
 [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
Error 2
make: *** [all] Error 2
   
Maybe I've done something wrong, but I've tested this on two
 machines now
and both times I've wiped my llvm/clang/mesa/clover installs in
   /usr/local
and rebuilt from scratch.
   
  
   Which revisions of Clang and LLVM are you using?
  
  
  I'm not at home at the moment, so I don't have access to those machines,
  but from memory:
 
  LLVM was git master as of sometime around 6-8pm CST last night.  One such
  revision would be
  commit ffbe432595c78ba28c8a9d200bf92996eed5e5d9
  git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17571891177308-0d3
 
 
  Clang was somewhere between 3bc7b6bef96 and dc84cd5efdd3430efb.
 
  I just retested on another machine with the following versions:
  LLVM: git: 0514595b9b20c9d80, svn: 175739
  Clang: 7d81281fc39f6d, svn: 175741
  Mesa: b63b3012c91 with your clover patch
 
  Result:
  Linking C executable ../../../../../bin/cl-custom-run-simple-kernel
  /usr/local/lib/libOpenCL.so: undefined reference to
 
 `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)
  const'
  /usr/local/lib/libOpenCL.so: undefined reference to
 
 `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)
  const'
  collect2: error: ld returned 1 exit status
  make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1
  make[1]: ***
 
 [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]
  Error 2
  make: *** [all] Error 2
 

 Did you re-configure and run make clean for piglit?


I did a full git clean -fdx on LLVM, Clang, libclc, Mesa, and Piglit after
removing all existing LLVM/Clang/Mesa includes/libraries from /usr/local.
I also did a full search for other copies of libclang on my system and the
only copies were in /usr/local/lib.

Note: libclc's prepare-builtins.cpp needed to be updated for LLVM 3.3 as
well (moving 4 headers into llvm/IR/*.h.

I then did a clean configure/make/make install on LLVM/libclc/Mesa, and
then a clean rebuild of piglit.

LLVM Configure: CC=gcc CXX=g++ ./configure --enable-optimized
--enable-assertions=no --enable-experimental-
targets=R600 --enable-targets=x86 --enable-shared --prefix=/usr/local

Mesa Configure: ./configure --with-dri-drivers=radeon
--with-gallium-drivers=r600 --enable-texture-float --enable-opencl

Piglit was rebuilt clean with only the CL tests enabled. No GL, GLX ,
Waffle, etc.

libOpenCL is linked against the 3.3 build of LLVM, but I did notice that
there's no linking to clang.. I did notice that while LLVM builds a shared
library, clang only installs a static archive. Are we statically linking
Clang into Mesa while using the shared libLLVM?

ldd /usr/local/lib/libOpenCL.so:
linux-vdso.so.1 =  (0x7dce1000)
libpthread.so.0 = /lib/x86_64-linux-gnu/libpthread.so.0
(0x7effa3e21000)
libxcb-dri2.so.0 = /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0
(0x7effa3c1c000)
libxcb.so.1 = /usr/lib/x86_64-linux-gnu/libxcb.so.1
(0x7effa39fd000)
libdrm.so.2 = /usr/local/lib/libdrm.so.2 (0x7effa37f1000)
libudev.so.0 = /lib/x86_64-linux-gnu/libudev.so.0 (0x7effa35e4000)
librt.so.1 = /lib/x86_64-linux-gnu/librt.so.1 (0x7effa33db000)
libdl.so.2 = /lib/x86_64-linux-gnu/libdl.so.2 (0x7effa31d7000)
libLLVM-3.3svn.so = /usr/local/lib/libLLVM-3.3svn.so(0x7effa22d8000)
libstdc++.so.6 = /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(0x7effa1fd4000)
libm.so.6 = /lib/x86_64-linux-gnu/libm.so.6 (0x7effa1cd8000)
libc.so.6 = /lib/x86_64-linux-gnu/libc.so.6 (0x7effa1919000)
libgcc_s.so.1 = /lib/x86_64-linux-gnu/libgcc_s.so.1
(0x7effa1702000)
/lib64/ld-linux-x86-64.so.2 (0x7effa511b000)
libXau.so.6 = /usr/lib/x86_64-linux-gnu/libXau.so.6
(0x7effa14fe000)
libXdmcp.so.6 =