diff gen/main.cpp @ 1073:aa31e5592994

Work around llvm bug #3749 better, or not at all if using a fixed llvm revision.
author Frits van Bommel <fvbommel wxs.nl>
date Mon, 09 Mar 2009 13:29:25 +0100
parents 7ce8355fbcc6
children b30fe7e1dbb9
line wrap: on
line diff
--- a/gen/main.cpp	Mon Mar 09 03:44:11 2009 +0100
+++ b/gen/main.cpp	Mon Mar 09 13:29:25 2009 +0100
@@ -845,11 +845,15 @@
             delete llvmModules[i];
         }
         
-        // workaround for llvm::Linker bug, see llvm #3749
+#if LLVM_REV < 66404
+        // Workaround for llvm bug #3749
+        // Not needed since LLVM r66404 (it no longer checks for this)
         llvm::GlobalVariable* ctors = linker.getModule()->getGlobalVariable("llvm.global_ctors");
-        if (ctors)
-            while (ctors->getNumUses() > 0)
-                delete *ctors->use_begin();
+        if (ctors) {
+            ctors->removeDeadConstantUsers();
+            assert(ctors->use_empty());
+        }
+#endif
         
         m->deleteObjFile();
         writeModule(linker.getModule(), filename);