[M3devel] "C-generating backend progress report, that nobody asked for" :)

Jay jay.krell at cornell.edu
Sun Sep 9 22:27:47 CEST 2012


If the records are fixed..that helps a lot, & not clear what is ideal actually..the re cords do then offer kind of nice syntax for access..but constants vs variables are split. I'd also prefer seperate variables to give the optimizer a chance to remove unused globals. That seems valuable.. Like, transform to idiomatic C where reasonable & possible...


 - Jay (briefly/pocket-sized-computer-aka-phone)

On Sep 9, 2012, at 1:07 PM, Jay <jay.krell at cornell.edu> wrote:

> The current method stinks for stock debugging. As I understand, globals are combined into structs & the fields all have generated names, & global records are flattened therein.
> 
> 
> It works. But stock debuggers see garbage.
> 
> 
>  - Jay (briefly/pocket-sized-computer-aka-phone)
> 
> On Sep 9, 2012, at 12:22 PM, Antony Hosking <hosking at cs.purdue.edu> wrote:
> 
>> I mis-spoke.  I think LLVM can cope with much the same as we currently have.  Front-end will continue to compute alignments and layouts.  We can assert the front-end’s datalayout by passing it to LLVM explicitly, which will complain if it does not match the actual target.  This is a rather nice feature of LLVM in that it allows us to retain control while having LLVM optimize accordingly.
>> 
>> On Sep 9, 2012, at 11:05 AM, Antony Hosking <hosking at cs.purdue.edu> wrote:
>> 
>>> Yes, agreed, these need to be properly typed too.
>>> First step will be to lift the M3CG interface.
>>> Problem: The compiler needs to control layout so that the run-time system knows where to find things.  This means that we need to assert alignments and layouts produced by the backend are the same as those in the front-end.  LLVM has nice ways to do this.  How will we do it in the C backend?  Does C have sufficient control over alignment?
>>> 
>>> On Sep 9, 2012, at 10:53 AM, Jay <jay.krell at cornell.edu> wrote:
>>> 
>>>> Btw, can this include "segment"/globals? Can they each be separate named variables? At least some of them?
>>>> 
>>>> 
>>>>  - Jay (briefly/pocket-sized-computer-aka-phone)
>>>> 
>>>> On Sep 9, 2012, at 7:48 AM, Antony Hosking <hosking at cs.purdue.edu> wrote:
>>>> 
>>>>> I’m looking at it...
>>>>> 
>>>>> First step is to lift slightly the level of M3CG to use properly typed memory access, instead of untyped address + offset.
>>>>> 
>>>>> On Sep 9, 2012, at 2:32 AM, Dragiša Durić <dragisha at m3w.org> wrote:
>>>>> 
>>>>>> I hope somebody will take on LLVM :).
>>>>>> 
>>>>> 
>>> 
>> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20120909/7e9abb5d/attachment-0002.html>


More information about the M3devel mailing list