iphone + LDC, a new ARM adventure

Kai Nacke kai at redstar.de
Wed Jan 8 22:16:49 PST 2014


On Wednesday, 8 January 2014 at 17:39:19 UTC, Dan Olson wrote:
> Dan Olson <zans.is.for.cans at yahoo.com> writes:
>
>> I'll spend some more time over the next few days and see what 
>> clang
>> does to make the sjlj pass happy.
>>
>> Thanks for all the help so far,
>
> I looked at what clang does different on i686-apple-darwin and
> arm-apple-darwin and one thing that changed when targeting ios 
> is a
> bitcast on the personality function.  So I edited the results 
> of ldc2
> -output-l:
>
> From:
>   %landing_pad = landingpad { i8*, i32 } personality i32 (i32, 
> i32, i64, i8*, i8*)* @_d_eh_personality
>
> To:
>   %landing_pad = landingpad { i8*, i32 } personality i8* 
> bitcast (i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality to 
> i8*)
>
> Then ran llc on the modified file.  No assertion and I get arm 
> assemble
> code!  And it looks reasonable to my untrained eye.

Did you get an assertion without the bitcast? This should work, 
too. If not then it is an LLVM bug.

> By the way, llc is very cool.  As I said, I am totally new to 
> llvm
> internals, so am having fun learning what it has in its magic 
> bag of
> tricks.

:-)

> So far I cannot find where clang adds the bitcast thing for 
> sjlj eh
> personality.  I will keep hunting.  Any ideas where I would do 
> this in
> ldc?
>
> When it comes to updating the _d_eh_personality for sjlj, I 
> noticed a
> very small difference in the c++ versions ( _gxx_personality_v0 
> and
> _gxx_personality_sj0).  It is actually one funtion body in
>
> gcc-4.8-20121028/libstdc++-v3/libsupc++/eh_personality.cc
>
> with a little extra code in an ifdef _GLIBCXX_SJLJ_EXCEPTIONS
> conditional.
>
> Dan


Regards,
Kai


More information about the digitalmars-d-ldc mailing list