gallivm: Use debug_printf in lp_build_printf.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 25 Apr 2012 15:35:05 +0000 (16:35 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 2 May 2012 09:24:34 +0000 (10:24 +0100)
So that its output can be seen on GUI window apps.

Tested-by: James Benton <jbenton@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_printf.c

index 806b8e0d0850db30d731507bc4b7a452e8117e1f..5e359ceaa2053ae306967621d7da321eb7c62987 100644 (file)
@@ -81,17 +81,20 @@ lp_build_printf(struct gallivm_state *gallivm, const char *fmt, ...)
    int argcount = lp_get_printf_arg_count(fmt);
    LLVMBuilderRef builder = gallivm->builder;
    LLVMContextRef context = gallivm->context;
-   LLVMModuleRef module = gallivm->module;
    LLVMValueRef params[50];
    LLVMValueRef fmtarg = lp_build_const_string(gallivm, fmt);
-   LLVMValueRef func_printf = LLVMGetNamedFunction(module, "printf");
+   LLVMTypeRef printf_type;
+   LLVMValueRef func_printf;
 
    assert(Elements(params) >= argcount + 1);
 
-   if (!func_printf) {
-      LLVMTypeRef printf_type = LLVMFunctionType(LLVMIntTypeInContext(context, 32), NULL, 0, 1);
-      func_printf = LLVMAddFunction(module, "printf", printf_type);
-   }
+   printf_type = LLVMFunctionType(LLVMIntTypeInContext(context, 32), NULL, 0, 1);
+
+   func_printf = lp_build_const_int_pointer(gallivm, func_to_pointer((func_pointer)debug_printf));
+
+   func_printf = LLVMBuildBitCast(gallivm->builder, func_printf,
+                                  LLVMPointerType(printf_type, 0),
+                                  "debug_printf");
 
    params[0] = fmtarg;