diff options
author | Arnold Schwaighofer <aschwaighofer@apple.com> | 2022-03-08 07:19:58 -0800 |
---|---|---|
committer | Arnold Schwaighofer <aschwaighofer@apple.com> | 2022-03-08 09:09:51 -0800 |
commit | dcdc1f29bb0cae41d5681183fdf57af8c51de907 (patch) | |
tree | 0277afb1150c481420d37b1f4bfe6ce9ffd6e9f0 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 50bc945a8fc539894fdbf618ace28085c1e19534 (diff) | |
download | llvm-dcdc1f29bb0cae41d5681183fdf57af8c51de907.zip llvm-dcdc1f29bb0cae41d5681183fdf57af8c51de907.tar.gz llvm-dcdc1f29bb0cae41d5681183fdf57af8c51de907.tar.bz2 |
InstCombine: Can't fold a phi arg load into the phi if the load is from a swifterror address
`swifterror` addresses are only allowed as operands to load, store, and
calls.
The following transformation is not allowed. It would create a phi with a
`swifterror` address operand.
```
%addr = alloca swifterror i8*
br %cond, label %bb1, label %b22
bb1:
%val1 = load i8*, i8** %addr
br exit
bb2:
%val2 = load i8*, i8** %addr
br exit
exit:
%val = phi [%val1, %bb1] [%val2, %bb2]
```
=>
```
%addr = alloca swifterror i8*
br %cond, label %bb1, label %b22
bb1:
br exit
bb2:
br exit
exit:
%val_addr = phi [%addr, %bb1] [%addr, %bb2]
%val2 = load i8*, i8** %val_addr
```
rdar://89865485
Differential Revision: https://reviews.llvm.org/D121217
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions