Re: [Mesa-dev] [PATCH 1/9] gallivm: Use LLVMPrintValueToString where available.

2016-04-18 Thread Roland Scheidegger
Series looks great to me. Thanks for the cleanup.

Reviewed-by: Roland Scheidegger 

Am 18.04.2016 um 11:14 schrieb Jose Fonseca:
> And llvm::raw_string_ostream where not (LLVM 3.3).
> 
> Thereby eliminating yet another dependency on unstable LLVM interfaces.
> 
> As a bonus this also gets LLVM IR on OutputDebugMessageA on MSVC (which
> was disabled, probably due to C++ issues.)
> 
> Tested `lp_test_arit -v -v` on LLVM 3.3, 3.4 and 3.8.
> ---
>  src/gallium/auxiliary/gallivm/lp_bld_debug.cpp | 45 
> ++
>  1 file changed, 10 insertions(+), 35 deletions(-)
> 
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp 
> b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
> index 11e9f92..a8c3899 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
> @@ -64,38 +64,6 @@ lp_check_alignment(const void *ptr, unsigned alignment)
> return ((uintptr_t)ptr & (alignment - 1)) == 0;
>  }
>  
> -#if (defined(PIPE_OS_WINDOWS) && !defined(PIPE_CC_MSVC)) || 
> defined(PIPE_OS_EMBEDDED)
> -
> -class raw_debug_ostream :
> -   public llvm::raw_ostream
> -{
> -private:
> -   uint64_t pos;
> -
> -public:
> -   raw_debug_ostream() : pos(0) { }
> -
> -   void write_impl(const char *Ptr, size_t Size);
> -
> -   uint64_t current_pos() const { return pos; }
> -   size_t preferred_buffer_size() const { return 512; }
> -};
> -
> -
> -void
> -raw_debug_ostream::write_impl(const char *Ptr, size_t Size)
> -{
> -   if (Size > 0) {
> -  char *lastPtr = (char *)[Size];
> -  char last = *lastPtr;
> -  *lastPtr = 0;
> -  _debug_printf("%*s", Size, Ptr);
> -  *lastPtr = last;
> -  pos += Size;
> -   }
> -}
> -
> -#endif
>  
>  extern "C" const char *
>  lp_get_module_id(LLVMModuleRef module)
> @@ -110,10 +78,17 @@ lp_get_module_id(LLVMModuleRef module)
>  extern "C" void
>  lp_debug_dump_value(LLVMValueRef value)
>  {
> -#if (defined(PIPE_OS_WINDOWS) && !defined(PIPE_CC_MSVC)) || 
> defined(PIPE_OS_EMBEDDED)
> -   raw_debug_ostream os;
> +#if HAVE_LLVM >= 0x0304
> +   char *str = LLVMPrintValueToString(value);
> +   if (str) {
> +  os_log_message(str);
> +  LLVMDisposeMessage(str);
> +   }
> +#elif defined(PIPE_OS_WINDOWS) || defined(PIPE_OS_EMBEDDED)
> +   std::string str;
> +   llvm::raw_string_ostream os(str);
> llvm::unwrap(value)->print(os);
> -   os.flush();
> +   os_log_message(str.c_str());
>  #else
> LLVMDumpValue(value);
>  #endif
> 

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


[Mesa-dev] [PATCH 1/9] gallivm: Use LLVMPrintValueToString where available.

2016-04-18 Thread Jose Fonseca
And llvm::raw_string_ostream where not (LLVM 3.3).

Thereby eliminating yet another dependency on unstable LLVM interfaces.

As a bonus this also gets LLVM IR on OutputDebugMessageA on MSVC (which
was disabled, probably due to C++ issues.)

Tested `lp_test_arit -v -v` on LLVM 3.3, 3.4 and 3.8.
---
 src/gallium/auxiliary/gallivm/lp_bld_debug.cpp | 45 ++
 1 file changed, 10 insertions(+), 35 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp 
b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
index 11e9f92..a8c3899 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
@@ -64,38 +64,6 @@ lp_check_alignment(const void *ptr, unsigned alignment)
return ((uintptr_t)ptr & (alignment - 1)) == 0;
 }
 
-#if (defined(PIPE_OS_WINDOWS) && !defined(PIPE_CC_MSVC)) || 
defined(PIPE_OS_EMBEDDED)
-
-class raw_debug_ostream :
-   public llvm::raw_ostream
-{
-private:
-   uint64_t pos;
-
-public:
-   raw_debug_ostream() : pos(0) { }
-
-   void write_impl(const char *Ptr, size_t Size);
-
-   uint64_t current_pos() const { return pos; }
-   size_t preferred_buffer_size() const { return 512; }
-};
-
-
-void
-raw_debug_ostream::write_impl(const char *Ptr, size_t Size)
-{
-   if (Size > 0) {
-  char *lastPtr = (char *)[Size];
-  char last = *lastPtr;
-  *lastPtr = 0;
-  _debug_printf("%*s", Size, Ptr);
-  *lastPtr = last;
-  pos += Size;
-   }
-}
-
-#endif
 
 extern "C" const char *
 lp_get_module_id(LLVMModuleRef module)
@@ -110,10 +78,17 @@ lp_get_module_id(LLVMModuleRef module)
 extern "C" void
 lp_debug_dump_value(LLVMValueRef value)
 {
-#if (defined(PIPE_OS_WINDOWS) && !defined(PIPE_CC_MSVC)) || 
defined(PIPE_OS_EMBEDDED)
-   raw_debug_ostream os;
+#if HAVE_LLVM >= 0x0304
+   char *str = LLVMPrintValueToString(value);
+   if (str) {
+  os_log_message(str);
+  LLVMDisposeMessage(str);
+   }
+#elif defined(PIPE_OS_WINDOWS) || defined(PIPE_OS_EMBEDDED)
+   std::string str;
+   llvm::raw_string_ostream os(str);
llvm::unwrap(value)->print(os);
-   os.flush();
+   os_log_message(str.c_str());
 #else
LLVMDumpValue(value);
 #endif
-- 
2.5.0

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