summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2017-02-23 19:13:48 +0000
committerAdrian Prantl <aprantl@apple.com>2017-02-23 19:13:48 +0000
commit29cf0c4318e86dad3bbab6078833eef108204eac (patch)
tree6bfbdc0a7149c72b865ce5befadf8d83b8316580 /llvm/lib
parent4a4fbe162f27b5c1ee973d93d9593ef5dbc51402 (diff)
downloadbcm5719-llvm-29cf0c4318e86dad3bbab6078833eef108204eac.tar.gz
bcm5719-llvm-29cf0c4318e86dad3bbab6078833eef108204eac.zip
Revert "Teach the IR verifier to reject conflicting debug info for function arguments."
This reverts commit r295749 while investigating PR32042. It looks like this check uncovered a problem in the frontend that needs to be fixed before the check can be enabled again. llvm-svn: 296005
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/IR/Verifier.cpp38
1 files changed, 0 insertions, 38 deletions
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 4dd18797a95..7d0bfd7270c 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -297,9 +297,6 @@ class Verifier : public InstVisitor<Verifier>, VerifierSupport {
// constant expressions, we can arrive at a particular user many times.
SmallPtrSet<const Value *, 32> GlobalValueVisited;
- // Keeps track of duplicate function argument debug info.
- SmallVector<const DILocalVariable *, 16> DebugFnArgs;
-
TBAAVerifier TBAAVerifyHelper;
void checkAtomicMemAccessSize(Type *Ty, const Instruction *I);
@@ -501,7 +498,6 @@ private:
void verifySiblingFuncletUnwinds();
void verifyFragmentExpression(const DbgInfoIntrinsic &I);
- void verifyFnArgs(const DbgInfoIntrinsic &I);
/// Module-level debug info verification...
void verifyCompileUnits();
@@ -1950,8 +1946,6 @@ void Verifier::verifySiblingFuncletUnwinds() {
// visitFunction - Verify that a function is ok.
//
void Verifier::visitFunction(const Function &F) {
- DebugFnArgs.clear();
-
visitGlobalValue(F);
// Check function arguments.
@@ -4354,8 +4348,6 @@ void Verifier::visitDbgIntrinsic(StringRef Kind, DbgIntrinsicTy &DII) {
" variable and !dbg attachment",
&DII, BB, F, Var, Var->getScope()->getSubprogram(), Loc,
Loc->getScope()->getSubprogram());
-
- verifyFnArgs(DII);
}
static uint64_t getVariableSize(const DILocalVariable &V) {
@@ -4424,36 +4416,6 @@ void Verifier::verifyFragmentExpression(const DbgInfoIntrinsic &I) {
AssertDI(FragSize != VarSize, "fragment covers entire variable", &I, V, E);
}
-void Verifier::verifyFnArgs(const DbgInfoIntrinsic &I) {
- DILocalVariable *Var;
- if (auto *DV = dyn_cast<DbgValueInst>(&I)) {
- // For performance reasons only check non-inlined ones.
- if (DV->getDebugLoc()->getInlinedAt())
- return;
- Var = DV->getVariable();
- } else {
- auto *DD = cast<DbgDeclareInst>(&I);
- if (DD->getDebugLoc()->getInlinedAt())
- return;
- Var = DD->getVariable();
- }
- AssertDI(Var, "dbg intrinsic without variable");
-
- unsigned ArgNo = Var->getArg();
- if (!ArgNo)
- return;
-
- // Verify there are no duplicate function argument debug info entries.
- // These will cause hard-to-debug assertions in the DWARF backend.
- if (DebugFnArgs.size() < ArgNo)
- DebugFnArgs.resize(ArgNo, nullptr);
-
- auto *Prev = DebugFnArgs[ArgNo - 1];
- DebugFnArgs[ArgNo - 1] = Var;
- AssertDI(!Prev || (Prev == Var), "conflicting debug info for argument", &I,
- Prev, Var);
-}
-
void Verifier::verifyCompileUnits() {
auto *CUs = M.getNamedMetadata("llvm.dbg.cu");
SmallPtrSet<const Metadata *, 2> Listed;
OpenPOWER on IntegriCloud