aboutsummaryrefslogtreecommitdiff
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* fix VLA/continue issuePhilip2015-04-273-2/+99
| | | | | | | | | | | | | | | | | | as reported in http://lists.nongnu.org/archive/html/tinycc-devel/2015-04/msg00131.html. Note that this is one of two separate VLA bugs: A. labels aren't reached by program execution, so the stack pointer is never saved B. continue doesn't restore the stack pointer as goto does This fixes only B. I'm not sure whether the same issue applies to break as well as continue. Add a test case, but disable tests #78 and #79 for now as they're not fully fixed until the issue described in http://lists.nongnu.org/archive/html/tinycc-devel/2015-04/msg00110.html is resolved.
* add test case for VLA segfaultsPhilip2015-04-273-1/+25
| | | | | | | | | This test obviously shouldn't segfault, but currently does so. The problem is in the VLA code, which fails to save the stack pointer before taking a conditional branch in some cases. See this thread: http://lists.nongnu.org/archive/html/tinycc-devel/2015-04/msg00130.html
* fix another x86_64 ABI bugPhilip2015-04-261-0/+68
| | | | | | | | | | | The old code assumed that if an argument doesn't fit into the available registers, none of the subsequent arguments do, either. But that's wrong: passing 7 doubles, then a two-double struct, then another double should generate code that passes the 9th argument in the 8th register and the two-double struct on the stack. We now do so. However, this patch does not yet fix the function calling code to do the right thing in the same case.
* x86_64 ABI tests, which currently cause failuresPhilip2015-04-251-0/+86
| | | | | | | | | | | | | | With the x86_64 Linux ELF ABI, we're currently failing two of these three tests, which have been disabled for now. The problem is mixed structures such as struct { double x; char c; }, which the x86_64 ABI specifies are to be passed/returned in one integer register and one SSE register; our current approach, marking the structure as VT_QLONG or VT_QFLOAT, fails in this case. (It's possible to fix this by getting rid of VT_QLONG and VT_QFLOAT entirely as at https://github.com/pipcet/tinycc, but the changes aren't properly isolated at present. Anyway, there might be a less disruptive fix.)
* a test for the #pragma push/pop_macroseyko2015-04-253-1/+37
|
* Revert "* and #pragma pop_macro("macro_name")"grischka2015-04-233-30/+1
| | | | | | | | | | | | - pop_macro incorrect with initially undefined macro - horrible implementation (tcc_open_bf) - crashes eventually (abuse of Sym->prev_tok) - the (unrelated) asm_label part is the opposite of a fix (Despite of its name this variable has nothing to do with the built-in assembler) This reverts commit 0c8447db7970813292a8be74ee50e49091be5d15.
* fix a subtle x86-64 calling bugPhilip2015-04-231-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I ran into an issue playing with tinycc, and tracked it down to a rather weird assumption in the function calling code. This breaks only when varargs and float/double arguments are combined, I think, and only when calling GCC-generated (or non-TinyCC, at least) code. The problem is we sometimes generate code like this: 804a468: 4c 89 d9 mov %r11,%rcx 804a46b: b8 01 00 00 00 mov $0x1,%eax 804a470: 48 8b 45 c0 mov -0x40(%rbp),%rax 804a474: 4c 8b 18 mov (%rax),%r11 804a477: 41 ff d3 callq *%r11 for a function call. Note how $eax is first set to the correct value, then clobbered when we try to load the function pointer into R11. With the patch, the code generated is: 804a468: 4c 89 d9 mov %r11,%rcx 804a46b: b8 01 00 00 00 mov $0x1,%eax 804a470: 4c 8b 5d c0 mov -0x40(%rbp),%r11 804a474: 4d 8b 1b mov (%r11),%r11 804a477: 41 ff d3 callq *%r11 which is correct. This becomes an issue when get_reg(RC_INT) is modified not always to return %rax after a save_regs(0), because then another register (%ecx, say) is clobbered, and the function passed an invalid argument. A rather convoluted test case that generates the above code is included. Please note that the test will not cause a failure because TinyCC code ignores the %rax argument, but it will cause incorrect behavior when combined with GCC code, which might wrongly fail to save XMM registers and cause data corruption.
* * and #pragma pop_macro("macro_name")seyko2015-04-213-1/+30
| | | | | | | | | | * give warning if pragma is unknown for tcc * don't free asm_label in sym_free(), it's a job of the asm_free_labels(). The above pragmas are used in the mingw headers. Thise pragmas are implemented in gcc-4.5+ and current clang.
* add missing test from -fdollar-in-identifiers commitRamsay Jones2015-04-202-0/+55
| | | | | | | Commit 5ce2154c ("-fdollar-in-identifiers addon", 20-04-2015) forgot to include the test files from Daniel's patch. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
* -fdollar-in-identifiers addonseyko2015-04-202-5/+9
| | | | | | | * disable a -fdollar-in-identifiers option in assembler files * a test is added This is a patch addon from Daniel Holden.
* a bounds checking code for the ARCH=x86_64seyko2015-04-101-5/+56
|
* fix installation amd bcheck for Windowsseyko2015-04-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | * define targetos=Windows when --enable-tcc32-mingw, --enable-cygwin, ... * use TARGETOS insteed HOST_OS when selecting PROGS * use "$(tccdir)" insteed $(tccdir) on install (spaces in path) * install tcc.exe too * produce bcheck.o when cross-compiling too (lib/Makefile) * force bcheck.o linking by compiling inside tcc_set_output_type() a dummy program with local array. Otherwise bcheck.o may be not linked. * replace %xz format specifier with %p in bcheck (don't supported on Windows) * call a __bound_init when __bound_ptr_add, __bound_ptr_indir, __bound_new_region, __bound_delete_region called. This is because a __bound_init inside ".init" section is not called on Windows for unknown reason. * print on stderr a message when an illegal pointer is returned: there is no segmentation violation on Windows for a program compiled with "tcc -b" * remove "C:" subdir on clean if $HOST_OS = "Linux" * default CFLAGS="-Wall -g -O0" insteed CFLAGS="-Wall -g -O2" to speed up compilation and more precise debugging.
* remove a compilation warnings for libtest and test3seyko2015-04-101-0/+2
| | | | | | | | | | ------------ libtest ------------ ./libtcc_test lib_path=.. <string>:11: warning: implicit declaration of function 'printf' <string>:13: warning: implicit declaration of function 'add' ------------ test3 ------------ tcctest.c:1982: warning: implicit declaration of function 'putchar' tcctest.c:2133: warning: implicit declaration of function 'strlen'
* A right fix for the array in struct initialization w/o '{'seyko2015-03-233-1/+107
| | | | | Parse a type if there is only one '(' before a type token. Otherwise a recursion will perform a job.
* skip 73_arm64,test on ARCH=x86-64: it fails on this ARCHseyko2015-03-201-0/+3
|
* Add some missing nocode_wanted guardThomas Preud'homme2015-03-103-0/+3
| | | | | | int i = i++ causes a segfault because of missing guard. Looking recursively at all backend functions called from middle end several more guard appeared to be missing.
* tests/Makefile: Quote to avoid: /bin/sh: 1: [: !=: unexpected operatorEdmund Grimley Evans2015-03-071-1/+1
|
* arm64: Optimise some integer operations with a constant operand.Edmund Grimley Evans2015-03-072-0/+119
|
* Disable floating-point test for ARM soft-floatseyko2015-03-042-2/+14
| | | | | | | | | | | From: Matteo Cypriani <mcy@lm7.fr> Date: Fri, 5 Sep 2014 23:22:56 -0400 Subject: Disable floating-point test for ARM soft-float tcc is not yet capable of doing softfloat floating-point operations on ARM, therefore we disable this test for these platforms. Note that tcc displays a warning to warn ARM users about this limitation (debian)
* disable-BTESTSseyko2015-03-041-1/+0
|
* Disable floating-point test for ARM soft-floatseyko2015-03-031-0/+2
| | | | | | | | | | | From: Matteo Cypriani <mcy@lm7.fr> Date: Fri, 5 Sep 2014 23:22:56 -0400 Subject: Disable floating-point test for ARM soft-float tcc is not yet capable of doing softfloat floating-point operations on ARM, therefore we disable this test for these platforms. Note that tcc displays a warning to warn ARM users about this limitation (debian)
* Turn on a implicit-function-declaration warning by default.seyko2015-03-032-0/+3
| | | | | | | | A non declared function leads to a seriuos problems. And while gcc don't turn this warning on lets tcc do it. This warning can be turned off by -Wno-implicit-function-declaration option. And autor must explicitly do this if program must be compiled with this warning off.
* arm64: Improve constant generation, with tests.Edmund Grimley Evans2015-03-022-0/+33
|
* 73_arm64.c: Avoid taking address of return value.Edmund Grimley Evans2015-02-261-21/+42
|
* Add 73_arm64 for testing some arm64 things, mostly PCS.Edmund Grimley Evans2015-02-253-0/+529
|
* tests/tcctest.c: Test COMPAT_TYPE(char *, signed char *).Edmund Grimley Evans2015-02-241-0/+2
|
* The "open a whisky and cut your finger open" patchThomas Preud'homme2015-02-182-3/+21
| | | | Make integer constant parsing C99 compliant
* Fix macro expansion of empty args.Reimar Döffinger2015-01-183-1/+13
| | | | Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* Allow tcc to understand a setob,... opcodes as alias to seto,...seyko2015-01-061-0/+2
| | | | | | PS: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20101122/112576.html This is fix PR8686 for llvm: accepting a 'b' suffix at the end of all the setcc instructions.
* round() in test (24_math_library) fail because there are no defs included.seyko2015-01-051-0/+2
| | | | gcc complain but work right and tcc simply fail to compile right.
* Fix parsing of binary floating point numberLee Duhem2014-12-153-1/+132
| | | | | | | * tccpp.c (parse_number): `shift' should be 1 while parsing binary floating point number. * tests/tests2/70_floating_point_literals.c: New test cases for floating point number parsing.
* Filter-out warning about softfloat in tests2Matteo Cypriani2014-10-171-2/+2
|
* Clear CFLAGS & LDFLAGS in testsMatteo Cypriani2014-09-072-0/+8
| | | | | | Clear CFLAGS and LDFLAGS to build the tests, in case the main Makefile passes some flags that aren't handled by tcc (we are not compiling tcc here, we are using tcc to compile the tests).
* Rename:jiang2014-07-017-6/+6
| | | | | | 68_macro_concat.c -> 68_macro_param_list_err_1.c 69_macro_concat.c -> 69_macro_param_list_err_2.c and Remove spaces
* bug:jiang2014-06-295-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------------------------------------------------------- #define hexCh(c (c >= 10 ? 'a' + c - 10 : '0' + c) hexCh(c); out: jiang@jiang:~/test$ ./tcc -E c4.c # 1 "c4.c" (c >= 10 ? 'a' + c - 10 : '0' + c); --------------------------------------------------------------- #define hexCh(c/3) (c >= 10 ? 'a' + c - 10 : '0' + c) hexCh(c); out: jiang@jiang:~/test$ ./tcc -E c4.c # 1 "c4.c" /3) (c >= 10 ? 'a' + c - 10 : '0' + c); jiang@jiang:~/test$ after patch: # 1 "c4.c" c4.c:1: error: may not appear in macro parameter list: "(" jiang@jiang:~/test$ jiang@jiang:~/test$ ./tcc -E c4.c # 1 "c4.c" c4.c:1: error: may not appear in macro parameter list: "/" jiang@jiang:~/test$
* tests2: fix and enable 46_grep test.minux2014-04-123-8/+13
|
* tests2: fix 30_hanoi test and enable it.minux2014-04-122-2/+2
|
* Fix preprocessor concat with empty argThomas Preud'homme2014-04-123-1/+18
|
* build: ignore and properly clean tests/vla_testminux2014-04-121-1/+1
|
* Prevent ## to appear at start or end of macroThomas Preud'homme2014-04-085-1/+9
|
* Add new tests for macro nestingThomas Preud'homme2014-04-073-1/+13
|
* Corrected spelling mistakes in comments and stringsVincent Lefevre2014-04-073-7/+7
|
* tests2: cleanupgrischka2014-04-073-23/+25
| | | | | | | | | - remove -norunsrc switch Meaning and usage (-run -norun...???) look sort of screwed. Also general usefulness is unclear, so it was actually to support exactly one (not even very interesting) test This partially reverts e31579b0769e1f9c0947d12e83316d1149307b1a
* win32: libtcc1.a needs to be built with tccgrischka2014-04-071-3/+3
| | | | | gcc/mingw produces msvc compatible pecoff objects, tcc only knows ELF.
* arm: Provide alloca()Michael Matz2014-04-051-2/+2
| | | | | | This provides a simple implementation of alloca for ARM (and enables the associated testcase). As tcc for ARM doesn't contain an assembler, we'll have to resort using gcc for compiling it.
* tests2: Build executables as wellMichael Matz2014-04-051-1/+6
| | | | | The individual tests in tests2 are checked only with -run. Build (and check) executables as well, to test also building executables.
* Allow local redefinition of enumeratorThomas Preud'homme2014-03-313-1/+16
|
* Add tests for previous fixesThomas Preud'homme2014-03-3011-1/+30
| | | | | | | | | Add tests for the fixes made in commits 76cb1144ef91924c53c57ea71e6f67ce73ce1cc6, a465b7f58fdea15caa1bfb81ff5e985c94c4df4a, 0f522fb32a635dafce30f3ce3ff2cb15bcec809e, 82969f045c99b4d1ef833de35117c17b326b46c0 and 673befd2d7745a90c1c4fcb6d2f0e266c04f8c97.
* Add the generated executables ending with "-cc" and "-tcc" to the makefile ↵mingodad2014-03-261-3/+4
| | | | "clean"
* Add test for previous commitThomas Preud'homme2014-03-255-4/+10
| | | | | * Adapt tests2 Makefile to support testing tcc error reporting * Add test for previous commit