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--