Thomas Preud'homme
a5a50eaafe
Implement C99 Variable Length Arrays
...
Implement C99 Variable Length Arrays in tinycc:
- Support VLA with multiple level (nested vla)
- Update documentation with regards to VT_VLA
- Add a testsuite in tcctest.c
2011-02-04 02:22:25 +01:00
Joe Soroka
cf08675702
weak definitions overrule non-weak prototypes
2011-02-01 09:41:03 -08:00
Joe Soroka
4d5105c8f1
support weak attribute on variables
2011-02-01 00:37:53 -08:00
Shinichiro Hamaji
0ed7ba3f5e
Support struct arguments with stdarg.h
...
- add __builtin_va_arg_types to check how arguments were passed
- move most code of stdarg into libtcc1.c
- remove __builtin_malloc and __builtin_free
- add a test case based on the bug report
(http://www.mail-archive.com/tinycc-devel@nongnu.org/msg03036.html )
2010-12-28 19:32:40 +09:00
Ben Bacarisse
14673d0c49
Fix binding of assignment expressions.
2010-10-25 15:40:30 +01:00
Thomas Preud'homme
b8adf0090e
Move asm label functions from tccasm.c to tccgen.c
...
* Move functions parse_asm_str and asm_label_instr from tccasm.c to
tccgen.c
* Remove CONFIG_TCC_ASM_LABEL macro as asm label are available on all
archs.
See:
http://lists.nongnu.org/archive/html/tinycc-devel/2010-09/msg00026.html
for the rationale.
2010-09-14 23:21:15 +02:00
Thomas Preud'homme
9b09fc376e
Add support of asm label for functions.
...
Add support for asm labels for functions, that is the ability to rename
a function at assembly level with __asm__ ("newname") appended in
function declaration.
2010-09-10 20:15:03 +02:00
Shinichiro Hamaji
c31dc7aa0c
Fix casts from 32bit integer types to 64bit integer types.
...
This bug was reported in
http://lists.gnu.org/archive/html/tinycc-devel/2010-08/msg00050.html
In this case, we should not emit any code when we cast from VT_FUNC to VT_PTR.
2010-08-31 08:35:31 +09:00
grischka
4ab4efd3a6
Revert "implemented C99 for loop with variable declaration"
...
This reverts commit 433ecdfc9d .
The patch breaks e.g. with
for ((i = 10); --i;);
In particular to check for a type decl. this is not sufficient:
if (tok < TOK_UIDENT) {
A future approach to c99 loop variables might instead use:
if (parse_btype(...)) {
plus refactor function decl() accordingly.
2010-08-21 13:39:12 +02:00
grischka
3ba37e1e3f
tccgen: Revert yuanbin's recent patches
...
This reverts commits 670993..d35138
Maybe these commits fixed something but also seemed to cause problems.
2010-06-21 18:21:44 +02:00
Claudio Bley
433ecdfc9d
implemented C99 for loop with variable declaration
2010-06-21 11:57:32 +02:00
grischka
632ee5a540
Revert "Complain for static fct declared w/o file scope"
...
This reverts commit e9406c09a3 .
We don't want errors for static local function pointers, such as:
{
static void (*fn)();
...
}
2010-06-15 17:03:23 +02:00
grischka
5fcd1fef1c
Fix last commits: remove CRLF, chmod 644 tccgen.c
2010-06-15 17:02:09 +02:00
yuanbin
d351384fdc
tccgen: skip ')' in front of ',' for initializer
2010-06-13 14:50:53 +08:00
yuanbin
952e83e0ca
tccgen: skip fields from same union
2010-06-13 02:37:28 +08:00
yuanbin
d6ce75b4d6
tccgen.c: skip fields from same union
2010-06-13 01:12:36 +08:00
yuanbin
dd72577759
tccgen: initial the last member of union
2010-06-11 21:18:05 +08:00
yuanbin
6709933d78
tccgen: initial last member of union
2010-06-11 20:48:33 +08:00
Daniel Glöckner
a64727ba7d
append ULL to big constants
2010-05-13 22:18:33 +02:00
Thomas Preud'homme
8eb86ab78d
Add nan, snan and inf float constants
2010-05-06 02:20:35 +02:00
Thomas Preud'homme
4d5fcfb971
Delete unused vtop_saved variable in unary_type
2010-04-20 16:12:41 +02:00
Thomas Preud'homme
e9406c09a3
Complain for static fct declared w/o file scope
...
Error out on static function without file scope and give an explaination
to the user
2010-04-15 19:33:47 +02:00
Thomas Preud'homme
8de9b7a631
Correctly support all unary expression with sizeof
...
Unary expression can start with a parenthesis. Thus, the current test
to detect which sizeof form is being parsed is inaccurate. This patch
makes tcc able to handle things like sizeof (x)[1] where x is declared
as char x[5]; wich is a valid unary expression
2010-04-15 19:05:53 +02:00
Romain Francoise
6655e06ec8
Error out on bad char array initialization
...
Error out with an explicit message when trying to initialize a
character array with something that's not a literal (optionally
enclosed in braces) as per C99 6.7.8:14; thanks to Antti-Juhani
Kaijanaho <ajk@debian.org> who did all the work.
2010-04-15 19:04:25 +02:00
Detlef Riekenberg
a3b932b3f9
tccgen: Fix broken use of ATTR_MODE
...
Sorry for that.
--
By by ... Detlef
2010-04-06 22:53:16 +02:00
Detlef Riekenberg
264a103610
tccgen: Detect (but ignore) function redirection
...
tcc is now able to parse <stdio.h> from gcc, when
__GNUC__ is also defined
--
By by ... Detlef
2010-04-06 00:33:15 +02:00
Daniel Glöckner
4d05a6319d
Catch array[index] with unknown sizeof(*array)
...
We could support this for index == 0, but GCC doesn't bother, so why should we?
2010-03-15 22:51:19 +01:00
Manuel Simoni
95b9a477b6
weak function symbols
2010-02-27 17:37:59 +01:00
Detlef Riekenberg
a975008ae7
Add support for the __mode__ attribute
...
--
By by ... Detlef
2010-01-26 22:56:22 +01:00
grischka
2341ee5142
tccpe: improve dllimport/export and use for tcc_add_symbol
2010-01-14 20:59:42 +01:00
grischka
0de95730ad
build from multiple objects: fix other targets
2009-12-20 20:33:41 +01:00
grischka
4a01eb09d8
use vpushv in some places
2009-12-20 01:54:38 +01:00
grischka
88a3ccab9f
allow tcc be build from separate objects
...
If you want that, run: make NOTALLINONE=1
2009-12-20 01:53:49 +01:00
grischka
7fa712e00c
win32: enable bounds checker & exception handler
...
exception handler borrowed from k1w1. Thanks.
2009-12-19 22:22:43 +01:00
grischka
41e112360f
fix uninitialized warnings with 'type.ref'
2009-12-19 22:16:22 +01:00
grischka
94bf4d2c22
tccpe: improve dllimport
2009-12-19 22:16:21 +01:00
grischka
ab4a4ab25e
x86-64: in gv(): ignore second register
2009-12-19 22:16:17 +01:00
Christian Jullien
614790dc14
x86-64: Fix Wrong comparisonbetweenpointerandlongcste
...
main (int argc, char *argv[])
{
char *p = (char *)0x12345678ABCD000F;
int res;
res = (p != (char *)0x12345678ABCD000F);
return res;
}
2009-12-19 22:16:16 +01:00
grischka
56d6abdb3d
tccgen: propagate alignment from typedef
...
Store (part of) the AttributeDef structure in the (int)sym-r
field of the typedef symbol (kludgy).
2009-12-06 17:37:33 +01:00
bobbl
c0620c8a00
avoid needless register save when storing structures
...
When storing structs with a memcpy call in vstore(),
so far a needless entry remaining on the vstack
sometimes resulted in an useless store generated by
save_regs() in gfunc_call() for the memcpy routine.
2009-12-01 17:59:30 +01:00
Daniel Glöckner
bc48cc1edb
fix sizeof(array + integer)
...
Previously sizeof would return the size of the array although the
expression is always a plain pointer of 4 (or 8) bytes.
2009-11-13 18:05:15 +01:00
grischka
5b113f3ee3
win32: handle __declspec(dllimport)
2009-11-13 18:04:56 +01:00
Shinichiro Hamaji
5dadff3de5
x86-64: Fix stab debug information.
...
We need 32bit relocations for code and 64bit for debug info.
Introduce a new macro R_DATA_PTR to distinguish the two usages.
2009-08-24 13:30:03 +02:00
grischka
0d34c2136e
tccgen: free inline functions correctly
2009-08-24 13:30:00 +02:00
grischka
9fda4f4248
win32: treat long double as double
2009-07-18 22:07:17 +02:00
grischka
035918ef2f
win64: fix pointer <-> unsigned long typecast issues
2009-07-18 22:05:58 +02:00
grischka
3ea4acb9b9
pe32+ target: add in various #define's
2009-07-18 22:05:27 +02:00
grischka
d0b432ab38
cleanup: stop abuse of sym->r for inline functions
2009-07-18 21:55:06 +02:00
grischka
956b4beec1
incompatible function ptr assignment: just warn
...
void fn_1(int i) {}
void (*fn_2)(char*) = fn_1;
2009-06-17 02:10:24 +02:00
grischka
6a004ed19f
allow redefinition of func_old_type functions
...
void *memcpy(void*, const void*, unsigned);
This gave an error if memcpy() has been used before
implicitely, e.g. for structure passing etc.
2009-06-17 02:09:52 +02:00