[LLVMdev] AArch64: GHC compilation issue.

Carter Schonwald carter.schonwald at gmail.com
Thu Jan 9 14:17:15 PST 2014


Karel, step 1 of the ghc llvm porting guide
https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM/GHC_LLVMPorting
specifically says "make sure unregisterized builds with the c backend work"

cheers :)


On Thu, Jan 9, 2014 at 4:39 PM, Karel Gardas <karel.gardas at centrum.cz>wrote:

>
> Carter,
>
> small misunderstanding. I'm not dealing with unregisterised via C build,
> but with unregisterised with LLVM, which is a little bit different beast.
>
> Cheers,
> Karel
>
>
> On 01/ 9/14 10:23 PM, Carter Schonwald wrote:
>
>> Hey Karel,
>> the GHC unregisterized via C code gen requires using GCC. Unless Clang
>> starts support some of the more eclectic GCC C extensions, you wont' be
>> able to use Clang/LLVM for doing an unregisterized build.
>>
>> GCC 4.8 and newer seems to have aarch64 support.
>>
>> cheers!
>> -Carter
>>
>>
>> On Wed, Jan 8, 2014 at 4:51 PM, Karel Gardas <karel.gardas at centrum.cz
>> <mailto:karel.gardas at centrum.cz>> wrote:
>>
>>
>>     Hi Tim,
>>
>>
>>     On 01/ 8/14 10:24 PM, Tim Northover wrote:
>>
>>         Hi Karel,
>>
>>             I've observed the same issue with LLVM 3.4 as distributed by
>>             Ubuntu 13.10
>>             and with LLVM HEAD compiled on January 6. I'm able to
>>             provide the byte-code
>>             file which results in this issue, but would first like to
>>             know if this is a
>>             known issue in AArch64 target support or if I shall submit
>>             it somewhere or
>>             even if I did some mistake in invoking llc or providing
>>             wrong set of options
>>             to it.
>>
>>
>>         I've certainly not seen similar. Usually "Cannot select" errors
>> are
>>         fixed very quickly since they're so easy to narrow down and fix. I
>>         think this is a real bug and the .ll file would be very useful.
>>
>>
>>     the bziped2 file is here for you
>>     https://app.box.com/s/__0i43c5j1bq40yheocmn9
>>
>>     <https://app.box.com/s/0i43c5j1bq40yheocmn9>
>>
>>
>>             It compiles to amd64 code by default so I added just
>>             -march=aarch64
>>             and was in impression that it should be enough to target
>>             AArch64 platform...
>>             If that's wrong, please let me know.
>>
>>
>>         That's on the edge of OK. There are numerous tricky ABI issues
>> that
>>         could be caused by simply swapping a -march argument to LLVM .
>>         Clang,
>>         for example, wouldn't be able to compile correct C or C++ code
>> with
>>         just that switch. But GHC presumably has less stringent ABI
>>         compatibility requirements, so it might get away with it.
>>
>>
>>     I hope so.
>>
>>
>>         On the other hand, I think x86 (and possibly ARM) has specific
>>         code to
>>         handle the GHC calling conventions, which I'm fairly sure AArch64
>>         doesn't. That *might* just be a matter of performance, or it
>>         might be
>>         crucial. I kept meaning to get GHC working but never really got
>>         around
>>         to it.
>>
>>
>>     Ah, I've not mentioned it before, but I'm attempting to port GHC to
>>     AArch64 and the first step is to get so called unregisterised build
>>     working. Unregisterised build does not require this specific GHC
>> calling
>>     convention. Once this is working I'll come here hopefully with some
>>     patch or with ask for idea/help with modification of AArch64 target
>>     support to make GHC calling convention a reality. But certainly I'm
>> not
>>     there yet...
>>
>>     Hmm, but since you mentioned it. Has anything changed in the LLVM so
>>     it's more easy to write such calling convention? IIRC, the calling
>>     convention is here just to tell LLVM to omit usage of some registers
>> as
>>     they are pinned to the haskell virtual registers... I hope I'm not too
>>     misleading here...And in the past creating such calling convention
>> where
>>     the required regs were removed was the only way probably...
>>
>>     Thanks!
>>     Karel
>>
>>
>>     _________________________________________________
>>     LLVM Developers mailing list
>>     LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
>> http://llvm.cs.uiuc.edu
>>     http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev
>>     <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140109/00ac9a24/attachment.html>


More information about the llvm-dev mailing list