diff options
| author | Adrian Prantl <aprantl@apple.com> | 2017-11-07 00:45:34 +0000 |
|---|---|---|
| committer | Adrian Prantl <aprantl@apple.com> | 2017-11-07 00:45:34 +0000 |
| commit | 25a09dd40853d6fb1137d7847f3cca1a1e813caf (patch) | |
| tree | 8a9f24db98829154cdee1f410de057f7d05d98e7 /llvm/lib/Transforms/Scalar/SROA.cpp | |
| parent | 4e30b96834cea5682a8e9e024dda06319825000a (diff) | |
| download | bcm5719-llvm-25a09dd40853d6fb1137d7847f3cca1a1e813caf.tar.gz bcm5719-llvm-25a09dd40853d6fb1137d7847f3cca1a1e813caf.zip | |
Make DIExpression::createFragmentExpression() return an Optional.
We can't safely split arithmetic into multiple fragments because we
can't express carry-over between fragments.
llvm-svn: 317534
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SROA.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/SROA.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp index b968cb8c892..6de6c8cce2c 100644 --- a/llvm/lib/Transforms/Scalar/SROA.cpp +++ b/llvm/lib/Transforms/Scalar/SROA.cpp @@ -4133,8 +4133,10 @@ bool SROA::splitAlloca(AllocaInst &AI, AllocaSlices &AS) { "new fragment is outside of original fragment"); Start -= OrigFragment->OffsetInBits; } - FragmentExpr = - DIExpression::createFragmentExpression(Expr, Start, Size); + if (auto E = DIExpression::createFragmentExpression(Expr, Start, Size)) + FragmentExpr = *E; + else + continue; } // Remove any existing intrinsics describing the same alloca. |

