Mesa (master): llvmpipe: delete function bodies after generating machine code

Jose Fonseca jrfonseca at kemper.freedesktop.org
Fri Jul 30 15:25:34 UTC 2010


Module: Mesa
Branch: master
Commit: 042018a943a403a4d9887b400deb3b3c83ee40c0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=042018a943a403a4d9887b400deb3b3c83ee40c0

Author: Zack Rusin <zackr at vmware.com>
Date:   Tue Jul 27 12:26:54 2010 -0400

llvmpipe: delete function bodies after generating machine code

---

 src/gallium/auxiliary/draw/draw_llvm.c        |    2 ++
 src/gallium/auxiliary/gallivm/lp_bld_init.h   |    2 ++
 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp |    8 ++++++++
 src/gallium/drivers/llvmpipe/lp_state_fs.c    |    1 +
 4 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 48489e5..8022b72 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -826,6 +826,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
    if (gallivm_debug & GALLIVM_DEBUG_ASM) {
       lp_disassemble(code);
    }
+   lp_func_delete_body(variant->function);
 }
 
 
@@ -1001,6 +1002,7 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian
    if (gallivm_debug & GALLIVM_DEBUG_ASM) {
       lp_disassemble(code);
    }
+   lp_func_delete_body(variant->function_elts);
 }
 
 void
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.h b/src/gallium/auxiliary/gallivm/lp_bld_init.h
index a32ced9..f26fdac 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.h
@@ -44,5 +44,7 @@ extern LLVMPassManagerRef lp_build_pass;
 void
 lp_build_init(void);
 
+extern void
+lp_func_delete_body(LLVMValueRef func);
 
 #endif /* !LP_BLD_INIT_H */
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index 072408b..6d5410d 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -166,3 +166,11 @@ lp_set_target_options(void)
    }
 #endif
 }
+
+
+extern "C" void
+lp_func_delete_body(LLVMValueRef FF)
+{
+   llvm::Function *func = llvm::unwrap<llvm::Function>(FF);
+   func->deleteBody();
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index dbcc286..5ee5bde 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -715,6 +715,7 @@ generate_fragment(struct llvmpipe_context *lp,
       if (gallivm_debug & GALLIVM_DEBUG_ASM) {
          lp_disassemble(f);
       }
+      lp_func_delete_body(function);
    }
 }
 




More information about the mesa-commit mailing list