[llvm-commits] [poolalloc] r76618 - /poolalloc/trunk/lib/PoolAllocate/PAMultipleGlobalPool.cpp
Haohui Mai
mai4 at uiuc.edu
Tue Jul 21 11:57:48 PDT 2009
Author: mai4
Date: Tue Jul 21 13:57:48 2009
New Revision: 76618
URL: http://llvm.org/viewvc/llvm-project?rev=76618&view=rev
Log:
Put __poolalloc_init() in llvm.used so it won't get killed.
Modified:
poolalloc/trunk/lib/PoolAllocate/PAMultipleGlobalPool.cpp
Modified: poolalloc/trunk/lib/PoolAllocate/PAMultipleGlobalPool.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/PoolAllocate/PAMultipleGlobalPool.cpp?rev=76618&r1=76617&r2=76618&view=diff
==============================================================================
--- poolalloc/trunk/lib/PoolAllocate/PAMultipleGlobalPool.cpp (original)
+++ poolalloc/trunk/lib/PoolAllocate/PAMultipleGlobalPool.cpp Tue Jul 21 13:57:48 2009
@@ -339,6 +339,20 @@
(FunctionType::get(Type::VoidTy, std::vector<const Type*>(), false),
GlobalValue::ExternalLinkage, "__poolalloc_init", &M);
+ // put it into llvm.used so that it won't get killed.
+
+ Type * VoidPtrTy = PointerType::getUnqual(Type::Int8Ty);
+ ArrayType * LLVMUsedTy = ArrayType::get(VoidPtrTy, 1);
+ Constant * C = ConstantExpr::getBitCast (cast<Constant>(InitFunc), VoidPtrTy);
+ std::vector<Constant*> UsedFunctions(1,C);
+ Constant * NewInit =
+ ConstantArray::get (LLVMUsedTy, UsedFunctions);
+
+ new GlobalVariable (M, LLVMUsedTy, false,
+ GlobalValue::AppendingLinkage,
+ NewInit, "llvm.used");
+
+
BasicBlock * BB = BasicBlock::Create("entry", InitFunc);
SteensgaardDataStructures * DS = dynamic_cast<SteensgaardDataStructures*>(Graphs);
More information about the llvm-commits
mailing list