From 8d81154a979a60f5f896659bd4b2af5f160cc529 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Sat, 10 May 2008 19:00:11 +0200 Subject: [PATCH] [svn r205] moved some local static variables used for memset and memcpy intrinsics to IrState --- gen/irstate.cpp | 4 ++++ gen/irstate.h | 6 ++++++ gen/tollvm.cpp | 28 ++++++++++++---------------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/gen/irstate.cpp b/gen/irstate.cpp index 6a491235..c59a1b4d 100644 --- a/gen/irstate.cpp +++ b/gen/irstate.cpp @@ -53,6 +53,10 @@ IRState::IRState() emitMain = false; mainFunc = 0; ir.state = this; + llvm_DeclareMemSet32 = NULL; + llvm_DeclareMemSet64 = NULL; + llvm_DeclareMemCpy32 = NULL; + llvm_DeclareMemCpy64 = NULL; } IrFunction* IRState::func() diff --git a/gen/irstate.h b/gen/irstate.h index 596c3c0c..f82fe079 100644 --- a/gen/irstate.h +++ b/gen/irstate.h @@ -140,6 +140,12 @@ struct IRState FuncDeclVector ctors; FuncDeclVector dtors; FuncDeclVector unitTests; + + // intrinsics + llvm::Function* llvm_DeclareMemSet32; + llvm::Function* llvm_DeclareMemSet64; + llvm::Function* llvm_DeclareMemCpy32; + llvm::Function* llvm_DeclareMemCpy64; }; #endif // LLVMDC_GEN_IRSTATE_H diff --git a/gen/tollvm.cpp b/gen/tollvm.cpp index af6ada55..98ac51f6 100644 --- a/gen/tollvm.cpp +++ b/gen/tollvm.cpp @@ -234,22 +234,20 @@ static llvm::Function* LLVM_DeclareMemIntrinsic(const char* name, int bits, bool // llvm.memset.i32 llvm::Function* LLVM_DeclareMemSet32() { - static llvm::Function* _func = 0; - if (_func == 0) { - _func = LLVM_DeclareMemIntrinsic("llvm.memset.i32", 32, true); + if (gIR->llvm_DeclareMemSet32 == 0) { + gIR->llvm_DeclareMemSet32 = LLVM_DeclareMemIntrinsic("llvm.memset.i32", 32, true); } - return _func; + return gIR->llvm_DeclareMemSet32; } ////////////////////////////////////////////////////////////////////////////////////////// llvm::Function* LLVM_DeclareMemSet64() { - static llvm::Function* _func = 0; - if (_func == 0) { - _func = LLVM_DeclareMemIntrinsic("llvm.memset.i64", 64, true); + if (gIR->llvm_DeclareMemSet64 == 0) { + gIR->llvm_DeclareMemSet64 = LLVM_DeclareMemIntrinsic("llvm.memset.i64", 64, true); } - return _func; + return gIR->llvm_DeclareMemSet64; } ////////////////////////////////////////////////////////////////////////////////////////// @@ -257,11 +255,10 @@ llvm::Function* LLVM_DeclareMemSet64() // llvm.memcpy.i32 llvm::Function* LLVM_DeclareMemCpy32() { - static llvm::Function* _func = 0; - if (_func == 0) { - _func = LLVM_DeclareMemIntrinsic("llvm.memcpy.i32", 32); + if (gIR->llvm_DeclareMemCpy32 == 0) { + gIR->llvm_DeclareMemCpy32 = LLVM_DeclareMemIntrinsic("llvm.memcpy.i32", 32); } - return _func; + return gIR->llvm_DeclareMemCpy32; } ////////////////////////////////////////////////////////////////////////////////////////// @@ -269,11 +266,10 @@ llvm::Function* LLVM_DeclareMemCpy32() // llvm.memcpy.i64 llvm::Function* LLVM_DeclareMemCpy64() { - static llvm::Function* _func = 0; - if (_func == 0) { - _func = LLVM_DeclareMemIntrinsic("llvm.memcpy.i64", 64); + if (gIR->llvm_DeclareMemCpy64 == 0) { + gIR->llvm_DeclareMemCpy64 = LLVM_DeclareMemIntrinsic("llvm.memcpy.i64", 64); } - return _func; + return gIR->llvm_DeclareMemCpy64; } //////////////////////////////////////////////////////////////////////////////////////////