Support the Nodebug emission kind for DICompileUnits.
Sample-based profiling and optimization remarks currently remove DICompileUnits from llvm.dbg.cu to suppress the emission of debug info from them. This is somewhat of a hack and only borderline legal IR. This patch uses the recently introduced NoDebug emission kind in DICompileUnit to achieve the same result without breaking the Verifier. A nice side-effect of this change is that it is now possible to combine NoDebug and regular compile units under LTO. http://reviews.llvm.org/D18808 <rdar://problem/25427165> llvm-svn: 265861
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
#include "llvm/IR/DerivedTypes.h"
|
||||
#include "llvm/IR/DebugInfoMetadata.h"
|
||||
#include "llvm/IR/GVMaterializer.h"
|
||||
#include "llvm/IR/InstrTypes.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
@@ -380,6 +381,19 @@ void Module::setDataLayout(const DataLayout &Other) { DL = Other; }
|
||||
|
||||
const DataLayout &Module::getDataLayout() const { return DL; }
|
||||
|
||||
DICompileUnit *Module::debug_compile_units_iterator::operator*() const {
|
||||
return cast<DICompileUnit>(CUs->getOperand(Idx));
|
||||
}
|
||||
DICompileUnit *Module::debug_compile_units_iterator::operator->() const {
|
||||
return cast<DICompileUnit>(CUs->getOperand(Idx));
|
||||
}
|
||||
|
||||
void Module::debug_compile_units_iterator::SkipNoDebugCUs() {
|
||||
while (CUs && (Idx < CUs->getNumOperands()) &&
|
||||
((*this)->getEmissionKind() == DICompileUnit::NoDebug))
|
||||
++Idx;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Methods to control the materialization of GlobalValues in the Module.
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user