diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-04-13 18:53:11 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-04-13 18:53:11 +0000 |
commit | c82570b68bc7b060bf54ef00637ff60ebae2a7a4 (patch) | |
tree | 309b795c4bbdcdbe9fc4609017435e2205a87d91 /llvm/lib/IR/DebugInfo.cpp | |
parent | aa1f2b63062c2f559ea156d4945cce722ed609e5 (diff) | |
download | bcm5719-llvm-c82570b68bc7b060bf54ef00637ff60ebae2a7a4.tar.gz bcm5719-llvm-c82570b68bc7b060bf54ef00637ff60ebae2a7a4.zip |
Reapply "Verifier: Check for incompatible bit piece expressions"
This reverts commit r234717, reapplying r234698 (in spirit).
As described in r234717, the original `Verifier` check had a
use-after-free. Instead of storing pointers to "interesting" debug info
intrinsics whose bit piece expressions should be verified once we have
typerefs, do a second traversal. I've added a testcase to catch the
`llc` crasher.
Original commit message:
Verifier: Check for incompatible bit piece expressions
Convert an assertion into a `Verifier` check. Bit piece expressions
must fit inside the variable, and mustn't be the entire variable.
Catching this in the verifier will help us find bugs sooner, and makes
`DIVariable::getSizeInBits()` dead code.
llvm-svn: 234776
Diffstat (limited to 'llvm/lib/IR/DebugInfo.cpp')
-rw-r--r-- | llvm/lib/IR/DebugInfo.cpp | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp index b0bd8223294..7797a026211 100644 --- a/llvm/lib/IR/DebugInfo.cpp +++ b/llvm/lib/IR/DebugInfo.cpp @@ -33,19 +33,6 @@ using namespace llvm; using namespace llvm::dwarf; -/// \brief Return the size reported by the variable's type. -unsigned DIVariable::getSizeInBits(const DITypeIdentifierMap &Map) { - DIType Ty = getType().resolve(Map); - // Follow derived types until we reach a type that - // reports back a size. - while (isa<MDDerivedType>(Ty) && !Ty.getSizeInBits()) { - DIDerivedType DT = cast<MDDerivedType>(Ty); - Ty = DT.getTypeDerivedFrom().resolve(Map); - } - assert(Ty.getSizeInBits() && "type with size 0"); - return Ty.getSizeInBits(); -} - //===----------------------------------------------------------------------===// // Simple Descriptor Constructors and other Methods //===----------------------------------------------------------------------===// |