aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineFrameInfo.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard@metafoo.co.uk>2020-04-05 23:10:08 -0700
committerRichard Smith <richard@metafoo.co.uk>2020-04-05 23:23:20 -0700
commit6163aa96799cbad7f2f58e02c5bebee9647056a5 (patch)
treedb4dfceb9aeace5b53e8d883cfd0e1d5d92865ce /llvm/lib/CodeGen/MachineFrameInfo.cpp
parent97e57f3b24509efcadf83eb7436c044a2becd973 (diff)
downloadllvm-6163aa96799cbad7f2f58e02c5bebee9647056a5.zip
llvm-6163aa96799cbad7f2f58e02c5bebee9647056a5.tar.gz
llvm-6163aa96799cbad7f2f58e02c5bebee9647056a5.tar.bz2
PR45239: Don't deallocate TemplateIdAnnotations if they might still be
in the token stream. Previously we deleted all template-id annotations at the end of each top-level declaration. That doesn't work: we can do some lookahead and form a template-id annotation, and then roll back that lookahead, parse, and decide that we're missing a semicolon at the end of a top-level declaration, before we reach the annotation token. In that situation, we'd end up parsing the annotation token after deleting its associated data, leading to various forms of badness. We now only delete template-id annotations if the preprocessor can assure us that there are no annotation tokens left in the token stream (or if we're already at EOF). This lets us delete the annotation tokens earlier in a lot of cases; we now clean them up at the end of each statement and class member, not just after each top-level declaration. This also permitted some simplification of the delay-parsed templates cleanup code.
Diffstat (limited to 'llvm/lib/CodeGen/MachineFrameInfo.cpp')
0 files changed, 0 insertions, 0 deletions