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