diff options
| author | Vedant Kumar <vsk@apple.com> | 2018-12-07 03:01:54 +0000 |
|---|---|---|
| committer | Vedant Kumar <vsk@apple.com> | 2018-12-07 03:01:54 +0000 |
| commit | b2a6f8e505b105c733d931e1ed0513d7ea94f6c8 (patch) | |
| tree | 1e58c4acf583de190493ad34ec95af79996ae95a /llvm/lib/CodeGen/MacroFusion.cpp | |
| parent | 5fa736cc193968d59286e94b8b49e983d9e72384 (diff) | |
| download | bcm5719-llvm-b2a6f8e505b105c733d931e1ed0513d7ea94f6c8.tar.gz bcm5719-llvm-b2a6f8e505b105c733d931e1ed0513d7ea94f6c8.zip | |
[CodeExtractor] Store outputs at the first valid insertion point
When CodeExtractor outlines values which are used by the original
function, it must store those values in some in-out parameter. This
store instruction must not be inserted in between a PHI and an EH pad
instruction, as that results in invalid IR.
This fixes the following verifier failure seen while outlining within
ObjC methods with live exit values:
The unwind destination does not have an exception handling instruction!
%call35 = invoke i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* %exn.adjusted, i8* %1)
to label %invoke.cont34 unwind label %lpad33, !dbg !4183
The unwind destination does not have an exception handling instruction!
invoke void @objc_exception_throw(i8* %call35) #12
to label %invoke.cont36 unwind label %lpad33, !dbg !4184
LandingPadInst not the first non-PHI instruction in the block.
%3 = landingpad { i8*, i32 }
catch i8* null, !dbg !1411
rdar://46540815
llvm-svn: 348562
Diffstat (limited to 'llvm/lib/CodeGen/MacroFusion.cpp')
0 files changed, 0 insertions, 0 deletions

