# HG changeset patch # User Frits van Bommel # Date 1236601765 -3600 # Node ID aa31e5592994bd66cc7eab4032d7ce9c09c3170d # Parent 802d508f66f1ff3bcd5cd41c81f28be7f77395c7 Work around llvm bug #3749 better, or not at all if using a fixed llvm revision. diff -r 802d508f66f1 -r aa31e5592994 gen/main.cpp --- 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);