This is a horrible hack to work around libstdc++ bugs :(
authorChris Lattner <sabre@nondot.org>
Fri, 19 Nov 2004 08:44:07 +0000 (08:44 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 19 Nov 2004 08:44:07 +0000 (08:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17988 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/ExecutionEngine.cpp

index 7fb4ad3ae81bf063cf82bb1a7c8d19d7235ef6e7..812bec184d9b8d4d95f30c3eaa4555b043a699af 100644 (file)
@@ -442,6 +442,9 @@ GenericValue ExecutionEngine::LoadValueFromMemory(GenericValue *Ptr,
 //
 void ExecutionEngine::InitializeMemory(const Constant *Init, void *Addr) {
   if (isa<UndefValue>(Init)) {
+    // FIXME: THIS SHOULD NOT BE NEEDED.
+    unsigned Size = getTargetData().getTypeSize(Init->getType());
+    memset(Addr, 0, Size);
     return;
   } else if (Init->getType()->isFirstClassType()) {
     GenericValue Val = getConstantValue(Init);
@@ -524,13 +527,14 @@ void ExecutionEngine::EmitGlobalVariable(const GlobalVariable *GV) {
   DEBUG(std::cerr << "Global '" << GV->getName() << "' -> " << GA << "\n");
 
   const Type *ElTy = GV->getType()->getElementType();
+  unsigned GVSize = getTargetData().getTypeSize(ElTy);
   if (GA == 0) {
     // If it's not already specified, allocate memory for the global.
-    GA = new char[getTargetData().getTypeSize(ElTy)];
+    GA = new char[GVSize];
     addGlobalMapping(GV, GA);
   }
 
   InitializeMemory(GV->getInitializer(), GA);
-  NumInitBytes += getTargetData().getTypeSize(ElTy);
+  NumInitBytes += GVSize;
   ++NumGlobals;
 }