Re: [C--] Mlite C Compiler -- A C front-end generates C-- code

Ning Wang <[email protected]> Thu, 08 Jul 2010 20:42:15 -0700
Newsgroups gmane.comp.lang.c--
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------070203070406010609060006
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Norman Ramsey wrote:
>  > Hi folk,
>  > I make mlitecc testsuite available at 
>  > http://www.ningwang.org/releases/mlitecc-testsuite-0.1.tar.gz
>  > 
>  > This testsuite is extracted from gcc testsuite. It includes 2975 
>  > testsutes.  In this release, mlitecc with Quick C-- backend passes 2143 
>  > test cases, fails 511 test cases, and has 321 test cases unresolved. In 
>  > order to run the testsuite, you need to install dejgnu and mlitecc.
>
> Ning,
>
> What are you doing about compiling variadic functions?
>   
I use the gcc built-in functions to compile variadic functions.  That 
says va_start, va_arg, and va_end macros are represented by 
__builtin_va_start, __builtin_va_arg, and _builtin_va_end 
respectively.   A variadic function example and the generated cmm code 
are attached.

By default, mlitecc throws exception when it comes cross va_xxx macros. 
But you can enable this translation by specifying --vararg in the 
command line.  However, Quick C-- cannot handle __builtin_va_xxx, and it 
fails to generate binary code.  I believe it should be relatively easy 
to make Quick C-- to recognize these built-in functions.

mlitecc is the driver like gcc, and mlitecc1 is the actual C front-end 
like cc1.  Just running mlitecc1 will print out all options.  

I should implement your proposal for variadic functions, but it requires 
deeper understanding of Quick C--.  I should be able to get back to the 
details of Quick C-- after I finish my another project.

Best regards,
Ning

--------------070203070406010609060006
Content-Type: text/x-csrc;
 name="variadic.c"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="variadic.c"

#include <stdarg.h>
#include <stdio.h>

int add_em_up (int count,...)
{
  va_list ap;
  int i, sum;
  
  va_start (ap, count);         /* Initialize the argument list. */
  
  sum = 0;
  for (i = 0; i < count; i++)
    sum += va_arg (ap, int);    /* Get the next argument value. */
  
  va_end (ap);                  /* Clean up. */
  return sum;
}

int main (void)
{
  /* This call prints 16. */
  printf ("%d\n", add_em_up (3, 5, 5, 6));
  
  /* This call prints 55. */
  printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
  
  return 0;
}


--------------070203070406010609060006
Content-Type: text/plain;
 name="variadic.cmm"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="variadic.cmm"

dGFyZ2V0CiAgICAgIGJ5dGVvcmRlciBsaXR0bGUKICAgICAgZmxvYXQgImllZWU3NTQiCiAg
ICAgIG1lbXNpemUgOAogICAgICB3b3Jkc2l6ZSAzMgogICAgICBwb2ludGVyc2l6ZSAzMjsK
Yml0czIgU3lzdGVtLnJvdW5kaW5nX21vZGUgPSAiSUVFRSA3NTQgcm91bmRpbmcgbW9kZSI7
CmNvbnN0IFRZUEUgPSAxOwpjb25zdCBUWVBFREVDTCA9IDI7CmNvbnN0IFRZUEVERUYgPSAy
Owpjb25zdCBUWVBFT05MWSA9IDI7CnNlY3Rpb24gImRhdGEiCnsKICAgCn0Kc2VjdGlvbiAi
ZGF0YSIKewogICAKfQpzZWN0aW9uICJkYXRhIgp7CiAgIAp9CnNlY3Rpb24gImRhdGEiCnsK
ICAgc3BhbiBUWVBFIDE1MgogICB7CiAgICAgIEBzdHJfX21saXRlY2NfY3BwXzFiM2ZmOF9k
YV8yODk1NjU0NzZfNjoKICAgICAgYml0czggWzRdICIlZFxuXDAwMCI7CiAgIH0KfQpzZWN0
aW9uICJkYXRhIgp7CiAgIAp9CnNlY3Rpb24gImRhdGEiCnsKICAgCn0Kc2VjdGlvbiAiZGF0
YSIKewogICBpbXBvcnQgInByaW50ZiIgYXMgQHByaW50ZjsKfQpzZWN0aW9uICJkYXRhIgp7
CiAgIAp9CnNlY3Rpb24gInRleHQiCnsKICAgZXhwb3J0IEBhZGRfZW1fdXAgYXMgImFkZF9l
bV91cCI7CiAgIHNwYW4gVFlQRSAxNjAKICAgewogICAgICBmb3JlaWduICJDIiBAYWRkX2Vt
X3VwIChiaXRzMzIgQGNvdW50X1RfOCkKICAgICAgewogICAgICAgICBzcGFuIFRZUEUgOCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMzMiBAX2FkZF9lbV91cHJldDsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICBzcGFuIFRZUEUgMjIgewogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhY2tkYXRhIHtAX2FkZF9lbV91cF8xYXA6IGJpdHM4IFs0XTt9CiAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgIHNwYW4gVFlQRSA4IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhY2tkYXRhIHtAX2FkZF9lbV91cF8xaTogYml0czggWzRdO30K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICBzcGFuIFRZUEUgOCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YWNrZGF0YSB7QF9hZGRfZW1fdXBfMXN1bTogYml0czggWzRd
O30KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICBzcGFuIFRZUEUgOCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGJpdHMzMiBAX21saXRlY2NfZWFfX3RtcF9jZV8wOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgIHNwYW4gVFlQRSA4IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgYml0czMyIEBfbWxpdGVjY19lYV9fdG1wX2NlXzE7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgc3BhbiBUWVBFIDggewogICAgICAgICAgICAgICAgICAg
ICAgICBiaXRzMzIgQF9tbGl0ZWNjX2VhX190bXBfY2VfMjsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICBmb3JlaWduICJDIiBfX2J1aWx0aW5fdmFfc3RhcnQgKGJpdHMzMltA
X2FkZF9lbV91cF8xYXBdLAogICAgICAgICBAY291bnRfVF84KTsKICAgICAgICAgYml0czMy
W0BfYWRkX2VtX3VwXzFzdW1dID0gMDo6Yml0czMyOwogICAgICAgICBiaXRzMzJbQF9hZGRf
ZW1fdXBfMWldID0gMDo6Yml0czMyOwogICAgICAgICBAYWRkX2VtX3VwMDAwMDAwNjoKICAg
ICAgICAgOwogICAgICAgICBpZiAoJWdlKGJpdHMzMltAX2FkZF9lbV91cF8xaV0sIEBjb3Vu
dF9UXzgpKQogICAgICAgICB7CiAgICAgICAgICAgIGdvdG8gQGFkZF9lbV91cDAwMDAwMTU7
CiAgICAgICAgIH0KICAgICAgICAgQF9tbGl0ZWNjX2VhX190bXBfY2VfMCA9IGZvcmVpZ24g
IkMiIF9fYnVpbHRpbl92YV9hcmcKICAgICAgICAgKGJpdHMzMltAX2FkZF9lbV91cF8xYXBd
KTsKICAgICAgICAgQF9tbGl0ZWNjX2VhX190bXBfY2VfMSA9ICVhZGQoYml0czMyW0BfYWRk
X2VtX3VwXzFzdW1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQF9tbGl0
ZWNjX2VhX190bXBfY2VfMCk7CiAgICAgICAgIGJpdHMzMltAX2FkZF9lbV91cF8xc3VtXSA9
IEBfbWxpdGVjY19lYV9fdG1wX2NlXzE7CiAgICAgICAgIEBfbWxpdGVjY19lYV9fdG1wX2Nl
XzAgPSBiaXRzMzJbQF9hZGRfZW1fdXBfMWldOwogICAgICAgICBAX21saXRlY2NfZWFfX3Rt
cF9jZV8yID0gJWFkZChiaXRzMzJbQF9hZGRfZW1fdXBfMWldLCAxOjpiaXRzMzIpOwogICAg
ICAgICBiaXRzMzJbQF9hZGRfZW1fdXBfMWldID0gQF9tbGl0ZWNjX2VhX190bXBfY2VfMjsK
ICAgICAgICAgZ290byBAYWRkX2VtX3VwMDAwMDAwNjsKICAgICAgICAgQGFkZF9lbV91cDAw
MDAwMTU6CiAgICAgICAgIDsKICAgICAgICAgQGFkZF9lbV91cDAwMDAwMTY6CiAgICAgICAg
IGZvcmVpZ24gIkMiIF9fYnVpbHRpbl92YV9lbmQgKGJpdHMzMltAX2FkZF9lbV91cF8xYXBd
KTsKICAgICAgICAgQF9hZGRfZW1fdXByZXQgPSBiaXRzMzJbQF9hZGRfZW1fdXBfMXN1bV07
CiAgICAgICAgIGdvdG8gQGFkZF9lbV91cDAwMDAwMjA7CiAgICAgICAgIEBhZGRfZW1fdXAw
MDAwMDIwOgogICAgICAgICA7CiAgICAgICAgIEBhZGRfZW1fdXAwMDAwMDIxOgogICAgICAg
ICA7CiAgICAgICAgIGZvcmVpZ24gIkMiIHJldHVybiAoQF9hZGRfZW1fdXByZXQpOwogICAg
ICB9CiAgIH0KfQpzZWN0aW9uICJkYXRhIgp7CiAgIAp9CnNlY3Rpb24gInRleHQiCnsKICAg
ZXhwb3J0IEBtYWluIGFzICJtYWluIjsKICAgc3BhbiBUWVBFIDI0CiAgIHsKICAgICAgZm9y
ZWlnbiAiQyIgQG1haW4gKCkKICAgICAgewogICAgICAgICBzcGFuIFRZUEUgOCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGJpdHMzMiBAX21haW5yZXQ7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgc3BhbiBUWVBFIDM1IHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJpdHMzMiBAX21saXRlY2NfZWFfX3RtcF9jZV8wOwogICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICBzcGFuIFRZUEUgOCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMz
MiBAX21saXRlY2NfZWFfX3RtcF9jZV8xOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgIHNwYW4gVFlQRSA4IHsKICAgICAgICAgICAgICAgICAgICAgICAgYml0czMyIEBfbWxp
dGVjY19lYV9fdG1wX2NlXzI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgc3Bh
biBUWVBFIDggewogICAgICAgICAgICAgICAgICAgICAgICBiaXRzMzIgQF9tbGl0ZWNjX2Vh
X190bXBfY2VfMzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICBzcGFuIFRZUEUg
OCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMzMiBAX21saXRlY2NfZWFfX3RtcF9j
ZV80OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgIEBfbWxpdGVjY19lYV9fdG1w
X2NlXzAgPSBAc3RyX19tbGl0ZWNjX2NwcF8xYjNmZjhfZGFfMjg5NTY1NDc2XzY7CiAgICAg
ICAgIEBfbWxpdGVjY19lYV9fdG1wX2NlXzEgPSBmb3JlaWduICJDIiBAYWRkX2VtX3VwICgz
OjpiaXRzMzIsCiAgICAgICAgIDU6OmJpdHMzMiwgNTo6Yml0czMyLCA2OjpiaXRzMzIpOwog
ICAgICAgICBAX21saXRlY2NfZWFfX3RtcF9jZV8yID0gZm9yZWlnbiAiQyIgQHByaW50Zgog
ICAgICAgICAoQF9tbGl0ZWNjX2VhX190bXBfY2VfMCwgQF9tbGl0ZWNjX2VhX190bXBfY2Vf
MSk7CiAgICAgICAgIEBfbWxpdGVjY19lYV9fdG1wX2NlXzAgPSBAc3RyX19tbGl0ZWNjX2Nw
cF8xYjNmZjhfZGFfMjg5NTY1NDc2XzY7CiAgICAgICAgIEBfbWxpdGVjY19lYV9fdG1wX2Nl
XzMgPSBmb3JlaWduICJDIiBAYWRkX2VtX3VwICgxMDo6Yml0czMyLAogICAgICAgICAxOjpi
aXRzMzIsIDI6OmJpdHMzMiwgMzo6Yml0czMyLCA0OjpiaXRzMzIsIDU6OmJpdHMzMiwgNjo6
Yml0czMyLAogICAgICAgICA3OjpiaXRzMzIsIDg6OmJpdHMzMiwgOTo6Yml0czMyLCAxMDo6
Yml0czMyKTsKICAgICAgICAgQF9tbGl0ZWNjX2VhX190bXBfY2VfNCA9IGZvcmVpZ24gIkMi
IEBwcmludGYKICAgICAgICAgKEBfbWxpdGVjY19lYV9fdG1wX2NlXzAsIEBfbWxpdGVjY19l
YV9fdG1wX2NlXzMpOwogICAgICAgICBAX21haW5yZXQgPSAwOjpiaXRzMzI7CiAgICAgICAg
IGdvdG8gQG1haW4wMDAwMDE1OwogICAgICAgICBAbWFpbjAwMDAwMTU6CiAgICAgICAgIDsK
ICAgICAgICAgQG1haW4wMDAwMDE2OgogICAgICAgICA7CiAgICAgICAgIGZvcmVpZ24gIkMi
IHJldHVybiAoQF9tYWlucmV0KTsKICAgICAgfQogICB9Cn0=
--------------070203070406010609060006
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Cminusminus mailing list
[email protected]
https://lists.eecs.harvard.edu/mailman/listinfo/cminusminus

--------------070203070406010609060006--