diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-10-14 17:20:14 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-10-14 17:20:14 +0000 |
commit | 64ab4de44339d84e8ecf578e260b68aeb142187b (patch) | |
tree | aefac88c2b2dfd33c1c368d59dec35b3a2944ede /llvm/lib/CodeGen/MachineFunction.cpp | |
parent | 24026502d5df709997d447a7babdc6b2983a4090 (diff) | |
download | llvm-64ab4de44339d84e8ecf578e260b68aeb142187b.zip llvm-64ab4de44339d84e8ecf578e260b68aeb142187b.tar.gz llvm-64ab4de44339d84e8ecf578e260b68aeb142187b.tar.bz2 |
CodeGen: correct mangling for blocks
This addresses a regression introduced with SVN r219393. A block may be
contained within another block. In such a scenario, we would end up within a
BlockDecl, which is not a NamedDecl (as the names are synthesised). The cast to
a NamedDecl of the DeclContext would then assert as the types are unrelated.
Restore the mangling behaviour to that prior to SVN r219393. If the current
block is contained within a BlockDecl, walk up to the parent DeclContext,
recursively, until we have a non-BlockDecl. This is expected to be a NamedDecl.
Add in a couple of asserts to ensure that the assumption that we only encounter
a block within a NamedDecl or a BlockDecl.
llvm-svn: 219696
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunction.cpp')
0 files changed, 0 insertions, 0 deletions