diff options
author | George Burgess IV <george.burgess.iv@gmail.com> | 2018-03-08 05:32:30 +0000 |
---|---|---|
committer | George Burgess IV <george.burgess.iv@gmail.com> | 2018-03-08 05:32:30 +0000 |
commit | 003be7cbf4a4c95f1cc005ec96cbd1fbf9724391 (patch) | |
tree | 2c0dba5dd7031262d635d6c14c495254ba0eb931 /lldb/packages/Python/lldbsuite/test/help/TestHelp.py | |
parent | e465a84f85aae78fb5cce8f8630190fe81727959 (diff) | |
download | bcm5719-llvm-003be7cbf4a4c95f1cc005ec96cbd1fbf9724391.tar.gz bcm5719-llvm-003be7cbf4a4c95f1cc005ec96cbd1fbf9724391.zip |
[CodeGen] Emit lifetime.ends in both EH and non-EH blocks
Before this, we'd only emit lifetime.ends for these temps in
non-exceptional paths. This potentially made our stack larger than it
needed to be for any code that follows an EH cleanup. e.g. in
```
struct Foo { char cs[32]; };
void escape(void *);
struct Bar { ~Bar() { char cs[64]; escape(cs); } };
Foo getFoo();
void baz() {
Bar b;
getFoo();
}
```
baz() would require 96 bytes of stack, since the temporary from getFoo()
only had a lifetime.end on the non-exceptional path.
This also makes us keep hold of the Value* returned by
EmitLifetimeStart, so we don't have to remake it later.
llvm-svn: 326988
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/help/TestHelp.py')
0 files changed, 0 insertions, 0 deletions