This revision was automatically updated to reflect the committed changes.
Closed by commit rC351302: [SEH] Pass the frame pointer from SEH finally to
finally functions (authored by ssijaric, committed by ).
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56463/new/
rnk accepted this revision.
rnk added a comment.
This revision is now accepted and ready to land.
lgtm
Thanks! I'm surprised we passed as much of the Microsoft exception tests as we
did with this bug. Maybe it regressed.
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.
ssijaric updated this revision to Diff 181337.
ssijaric added a comment.
Address formatting comments.
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56463/new/
https://reviews.llvm.org/D56463
Files:
lib/CodeGen/CGException.cpp
test/CodeGen/exceptions-seh-nest
mgrang added inline comments.
Comment at: lib/CodeGen/CGException.cpp:1635
+else {
+ llvm::Value *LocalAddrFn =
CGM.getIntrinsic(llvm::Intrinsic::localaddress);
+ FP = CGF.Builder.CreateCall(LocalAddrFn);
80 char limit.
Repository:
rC Clang
CH
efriedma added a comment.
It's currently possible to write, in clang:
void f() {
__try {
}
__except(({__try{}__finally{}; 3;})) {
}
}
And the following currently crashes if you try to build it with clang:
struct A { ~A(); };
int f(const A&);
void g() {
__try {
ssijaric created this revision.
ssijaric added reviewers: rnk, efriedma, mstorsjo, TomTan.
The following test case, compiled with -OO -target=x86_64-windows-win32,
returns an incorrect value. It returns 5, when it should return 9. The
problem is that the frame pointer that the first finally bl