<div dir="ltr">I would guess that %threedoubles has a large alignment and that is making things go wrong. I thought we fixed this bug, though. I can't find it in the tracker, but it's in there. Someone used __try with local variables of type 'double' on 32-bit and things didn't work out. I'm pretty sure we fixed it though.</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Apr 3, 2018 at 4:53 AM Carlo Kok via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I 'm using locals recover to have a seh finally in a separate function:<br>
<br>
  %1 = alloca i8*, align 4<br>
  store i8* %0, i8** %1<br>
  %2 = alloca i32<br>
  store i32 0, i32* %2<br>
call void (...) @llvm.localescape(i8** %1, i32* %2)<br>
<br>
call my finaly like:<br>
<br>
  %loctmp = call i8* @llvm.localaddress()<br>
call void @"TEST$Fin0"(i8 0, i8* %loctmp)<br>
<br>
and recover it with:<br>
<br>
 %2 = call i8* @llvm.localrecover(i8* bitcast (void (i8*)* @TEST to i8*), i8* %1, i32 0)<br>
  %3 = bitcast i8* %2 to i8**<br>
%4 = load i8*, i8** %3<br>
<br>
I get the right value passed to my original function (ie %1)<br>
<br>
If I however *just* add a struct with 3 doubles alloca in it and localsescape those too:<br>
<br>
  %3 = alloca %threedoubles<br>
 store %threedoubles zeroinitializer, %threedoubles* %3<br>
 call void (...) @llvm.localescape(i8** %1, i32* %2, %threedoubles* %3)<br>
<br>
I get a different value (full testcase here)<br>
<br>
<a href="https://gist.github.com/carlokok/e1c9aef9c8a382afdb280385a422f913" rel="noreferrer" target="_blank">https://gist.github.com/carlokok/e1c9aef9c8a382afdb280385a422f913</a><br>
<br>
What am I doing wrong here?<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>