aboutsummaryrefslogtreecommitdiff
path: root/tccgen.c
Commit message (Collapse)AuthorAgeFilesLines
* use of TOK_alloca breaks cross compiler buildJoe Soroka2011-04-121-0/+4
| | | | | | | | | | | VLA inserts a call to alloca via enum TOK_alloca, but TOK_alloca only exists on I386 and X86_64 targets. This patch just emits an error at compile-time if someone tries to compile some VLA code for a TOK_alloca-less target. The best solution might be to just push the problem to link-time, since the existence-or-not of a alloca implementation can only be determined by linking. It seems like just declaring TOK_alloca unconditionally would achieve that, but for now, this at least gets the cross compilers to build.
* simplify/rollback VLA pointer subtractionJoe Soroka2011-04-111-10/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I don't know if it makes a difference to gen_op(TOK_PDIV) or not, but logically the ptr1_is_vla test in TP's VLA patch seems out of order, where the patch to fix it would be: ------------------------------------------------------------------ @@ -1581,15 +1581,15 @@ ST_FUNC void gen_op(int op) u = pointed_size(&vtop[-1].type); } gen_opic(op); + if (ptr1_is_vla) + vswap(); /* set to integer type */ #ifdef TCC_TARGET_X86_64 vtop->type.t = VT_LLONG; #else vtop->type.t = VT_INT; #endif - if (ptr1_is_vla) - vswap(); - else + if (!ptr1_is_vla) vpushi(u); gen_op(TOK_PDIV); } else { ------------------------------------------------------------------ Instead of that patch, which increases the complexity of the code, this one fixes the problem by just rolling back and retrying with a simpler approach.
* remove no-longer-necessary naive fix for vla vstack leakJoe Soroka2011-04-091-5/+0
|
* prevent internal segfault on apparent VLA at file scopeJoe Soroka2011-04-091-0/+2
|
* VLA fix [3/3]: store VLA sizeofs in anonymous runtime stack varsJoe Soroka2011-04-091-33/+22
|
* VLA fix [2/3]: removed VT_ARRAY from VT_VLA typesJoe Soroka2011-04-081-20/+11
| | | | | | | | | A VLA is not really an array, it's a pointer-to-an-array. Making this explicit allows us to back out a few parts of the original VLA patch and paves the way for the next part of the fix, where a VLA will be stored on the runtime stack as a pointer-to-an-array, rather than on the compile- time stack as a Sym*.
* move a comment to its correct locationJoe Soroka2011-04-081-1/+1
|
* add naive workaround for VLA vstack leakJoe Soroka2011-04-081-0/+5
|
* VLA bcheck works via bound alloca; add test, remove warningJoe Soroka2011-04-061-3/+1
|
* clarify post_type() VT_STORAGE handling by moving it outJoe Soroka2011-04-061-7/+7
|
* re-apply VLA by Thomas Preud'hommeJoe Soroka2011-04-061-30/+130
|
* handle c99 flexible array members less hackilyJoe Soroka2011-03-181-1/+18
|
* revert complicated & broken flexible array member handlingJoe Soroka2011-03-181-18/+4
|
* fix c99 for-loop init decl scope (thanks: grischka)Joe Soroka2011-03-081-0/+2
| | | | see http://lists.nongnu.org/archive/html/tinycc-devel/2011-03/msg00005.html
* clarify support for functions returning an array (try#2)Joe Soroka2011-03-081-4/+9
| | | | | fixes first attempt: http://repo.or.cz/w/tinycc.git/commitdiff/31fe1cc
* revert last commit. fails "make test"Joe Soroka2011-03-081-8/+5
| | | | | | | | | test target in Makefile does not depend on tcc. i'm not sure why, but i can think of at least one good reason. in my local tree I have it modified to do so, but somehow inadvertently reverted that so when i did "make test" before committing, it didn't actually test my changes. sorry.
* clarify support for functions returning an arrayJoe Soroka2011-03-081-5/+8
| | | | | | | | | previously, tcc would accept a prototype of a function returning an array, but not giving those functions bodies nor calling them. it seems that gcc has never supported them, so we should probably just error out... but it's possible that someone already using tcc includes some header that contains an unused prototype for one, so let's continue to support that.
* support c99 for-loop init decls (2nd attempt)Joe Soroka2011-03-081-3/+18
|
* partially revert e23194aJoe Soroka2011-03-081-19/+3
| | | | see http://lists.nongnu.org/archive/html/tinycc-devel/2011-03/msg00002.html
* revert last 3 commits. will find better way.Joe Soroka2011-03-081-96/+85
|
* small change to previous whitespace-only commitJoe Soroka2011-03-081-2/+2
|
* some indentation made prev patch pretty; removed itJoe Soroka2011-03-081-85/+81
|
* refactor post_type() to be explicit about its recursionJoe Soroka2011-03-081-5/+20
|
* added a note clarifying post_type() recursionJoe Soroka2011-03-081-0/+3
| | | | | | | | | some ancient pre-K&R C allows a function to return an array and the array brackets to be put after the arguments, such that "int c()[]" means the same as "int[] c()" see: http://llvm.org/bugs/show_bug.cgi?id=2399 http://java.sun.com/docs/books/jls/third_edition/html/classes.html#38703
* support c99 for-loop init declsJoe Soroka2011-03-071-3/+19
|
* use new weaken_symbol() to fix another real-world corner caseJoe Soroka2011-03-071-1/+1
|
* factor out symbol weakening into new functionJoe Soroka2011-03-071-10/+17
|
* weak redefinition of a symbol should weaken the originalJoe Soroka2011-03-071-0/+3
|
* __typeof(t) should not include storage modifiers of tJoe Soroka2011-03-061-0/+2
|
* tccgen: handle __attribute((alias("target")))Joe Soroka2011-03-031-1/+24
|
* collapse branch in decl(), making way for next patchJoe Soroka2011-03-031-9/+9
|
* handle post-asm-label attributes on variablesJoe Soroka2011-03-031-25/+14
|
* tcc: fix weak attribute handlingJoe Soroka2011-03-021-6/+2
|
* fix another static struct init issue (arrays with unknown size at end)Jaroslav Kysela2011-02-221-4/+18
|
* Fix complex static initializers (handle additional '}' and '{' brackets)Jaroslav Kysela2011-02-221-4/+8
| | | | | | - added an example to test suite - the "warning: assignment discards qualifiers from pointer target type" is present but harmless
* Add support of asm label for variables.Thomas Preud'homme2011-02-091-10/+23
| | | | | | | | Add support for asm labels for variables, that is the ability to rename a variable at assembly level with __asm__ ("newname") appended in its declaration. See http://gcc.gnu.org/onlinedocs/gcc-4.4.4/gcc/Asm-Labels.html for more details.
* Fix fct asm label: only valid for declarationThomas Preud'homme2011-02-091-53/+21
| | | | | | | | | - Fix function assembly label mechanism introduced in commit 9b09fc376e8c212a767c875e71ca003e3b9a0d2e to only accept alternative name for function declaration. - merge the code with the one introduced in commit 264a103610e3ee86b27b8cbb0e4ec81cd654d980. - Don't memorize token for asm label but directly the asm label.
* Fix incorrect use of basic type as bitflags.Thomas Preud'homme2011-02-071-4/+3
| | | | | Fix incorrect use of basic types as bitflags and inefficiency in commit cf36410e30b3c18be6c556158b2d0d0938f5b77d
* Complain for static fct declared w/o file scopeThomas Preud'homme2011-02-061-0/+4
| | | | | | | | | Error out on static function without file scope and give an explaination to the user This is a rewrite of e9406c09a3212ab3f120412a6bbdacb0cdd25deb but considering problems raised about static local function pointers in 632ee5a54076d417971ae7fa8a0c154441a71499.
* Revert "Implement C99 Variable Length Arrays"Thomas Preud'homme2011-02-051-130/+30
| | | | This reverts commit a5a50eaafeea0d3ca47bc8fb6baf983743470c60.
* Revert "Disable C99 VLA when alloca is unavailable."Thomas Preud'homme2011-02-051-8/+0
| | | | This reverts commit e3e5d4ad7a475e30ea13ad1ba9f23e6210d5d431.
* Disable C99 VLA when alloca is unavailable.Thomas Preud'homme2011-02-041-0/+8
| | | | | | | | | | | | | | | * Disable C99 VLA detection when alloca is unavailable and protect the new reference to TOK_alloca in decl_initializer in order to compile and run for architecture without working alloca. Not all code of C99 VLA is commented as it would required many ifdef stanza. Just the detection is commented so that VT_VLA is never set any type and the C99 VLA code is compiled but never called. However vpush_global_sym(&func_old_type, TOK_alloca) in decl_initializer needs to be protected by an ifdef stanza as well because it uses TOK_alloca. * include alloca and C99 VLA tests according to availability of TOK_alloca instead of relying on the current architecture
* Implement C99 Variable Length ArraysThomas Preud'homme2011-02-041-30/+130
| | | | | | | 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
* weak definitions overrule non-weak prototypesJoe Soroka2011-02-011-0/+12
|
* support weak attribute on variablesJoe Soroka2011-02-011-0/+7
|
* Support struct arguments with stdarg.hShinichiro Hamaji2010-12-281-6/+22
| | | | | | | | - 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)
* Fix binding of assignment expressions.Ben Bacarisse2010-10-251-29/+29
|
* Move asm label functions from tccasm.c to tccgen.cThomas Preud'homme2010-09-141-1/+28
| | | | | | | | | | * 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.
* Add support of asm label for functions.Thomas Preud'homme2010-09-101-1/+24
| | | | | | 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.
* Fix casts from 32bit integer types to 64bit integer types.Shinichiro Hamaji2010-08-311-5/+7
| | | | | | | 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.