Mercurial > hg > tinycc
changeset 245:3c96b5eae94d release_0_9_18
[project @ 2003-04-14 22:23:55 by bellard]
update
author | bellard |
---|---|
date | Mon, 14 Apr 2003 22:23:55 +0000 |
parents | 825ded62893f |
children | 47e87383dd2b |
files | Changelog TODO VERSION tcctest.c |
diffstat | 4 files changed, 30 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/Changelog Mon Apr 14 22:23:36 2003 +0000 +++ b/Changelog Mon Apr 14 22:23:55 2003 +0000 @@ -1,3 +1,11 @@ +version 0.9.18: + +- header fix (time.h) +- fixed inline asm without operand case +- fixed 'default:' or 'case x:' with '}' after (incorrect C construct accepted + by gcc) +- added 'A' inline asm constraint. + version 0.9.17: - PLT generation fix
--- a/TODO Mon Apr 14 22:23:36 2003 +0000 +++ b/TODO Mon Apr 14 22:23:55 2003 +0000 @@ -3,8 +3,6 @@ - '-b' bug. - atexit (Nigel Horne) - see -lxxx bug (Michael Charity). -- empty 'default:' in switch. -- fix asm without input/output (no % preprocessing) - handle inline functions as macros. - see transparent union pb in /urs/include/sys/socket.h - precise behaviour of typeof with arrays ? (__put_user macro) @@ -14,7 +12,6 @@ variable initialization (',' is considered incorrectly as separator in preparser) : change func argument code generator ? - function pointers/lvalues in ? : (linux kernel net/core/dev.c) -- add A x86 asm constraint (linux asm-i386/div64.h) - transform functions to function pointers in function parameters (net/ipv4/ip_output.c) - fix function pointer type display - fix bound exit on RedHat 7.3
--- a/VERSION Mon Apr 14 22:23:36 2003 +0000 +++ b/VERSION Mon Apr 14 22:23:55 2003 +0000 @@ -1,1 +1,1 @@ -0.9.17 \ No newline at end of file +0.9.18 \ No newline at end of file
--- a/tcctest.c Mon Apr 14 22:23:36 2003 +0000 +++ b/tcctest.c Mon Apr 14 22:23:55 2003 +0000 @@ -1841,6 +1841,20 @@ return x; } +static __inline__ unsigned long long mul64(unsigned int a, unsigned int b) +{ + unsigned long long res; + __asm__("mull %2" : "=A" (res) : "a" (a), "r" (b)); + return res; +} + +static __inline__ unsigned long long inc64(unsigned long long a) +{ + unsigned long long res; + __asm__("addl $1, %%eax ; adcl $0, %%edx" : "=A" (res) : "A" (a)); + return res; +} + unsigned int set; void asm_test(void) @@ -1849,10 +1863,17 @@ unsigned int val; printf("inline asm:\n"); + /* test the no operand case */ + asm volatile ("xorl %eax, %eax"); + memcpy1(buf, "hello", 6); strncat1(buf, " worldXXXXX", 3); printf("%s\n", buf); + /* 'A' constraint test */ + printf("mul64=0x%Lx\n", mul64(0x12345678, 0xabcd1234)); + printf("inc64=0x%Lx\n", inc64(0x12345678ffffffff)); + set = 0xff; sigdelset1(&set, 2); sigaddset1(&set, 16);