[svn r205] moved some local static variables used for memset and memcpy intrinsics to IrState

This commit is contained in:
Christian Kamm
2008-05-10 19:00:11 +02:00
parent 5af7719265
commit 8d81154a97
3 changed files with 22 additions and 16 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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;
}
//////////////////////////////////////////////////////////////////////////////////////////