changeset 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 802d508f66f1
children d9820e08bb84
files gen/main.cpp
diffstat 1 files changed, 8 insertions(+), 4 deletions(-) [+]
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);