diff options
| author | grischka <grischka> | 2017-12-12 17:57:20 +0100 |
|---|---|---|
| committer | grischka <grischka> | 2017-12-12 17:57:20 +0100 |
| commit | d348a9a51d32cece842b7885d27a411436d7887b (patch) | |
| tree | 52a0593e253b75ba7fa8d29a487771c977cff4c1 /tests/tcctest.c | |
| parent | 1a4d4b76e803a32db1168e66ad8f8b26c29c8ea0 (diff) | |
| download | tinycc-d348a9a51d32cece842b7885d27a411436d7887b.tar.gz tinycc-d348a9a51d32cece842b7885d27a411436d7887b.tar.bz2 | |
final update for 0.9.27main
tccgen.c:
- fix ldouble asm hack
- fix a VLA problem on Win64 (also x86_64-gen.c)
- patch_type(): make sure that no symbol ever changes
from global to static
tcc.c:
- tcc -vv: print libtcc1.a path also on win32
tccpe.c, tcctools.c:
- use unix LF mode to for .def output files (that is for
creating reproducible output trees)
Makefile:
- suppress some warnings when makeinfo is missing
- call 'which install' only on win32
tests/Makefile:
- change PATH only on WINNT systems (i.e. not if cross-compiling
on linux for win32)
- asm-c-connect.test: slim output and do diff
tccrun.c tccpe.c *-link.c:
- integrate former 'pe_relocate_rva()' into normal relocation
This also fixes linkage of the unwind data on WIN64 for -run
(reported by Janus Lynggaard Thorborg)
tccasm.c, tests/tcctest.c:
- fix dot (sym_index of -1 crashed in put_elf_reloc)
- massage .set a bit (see test)
other:
- #define SECTION_ABS removed
- ST_DATA Section *strtab_section: removed
- put_extern_sym2(): take int section number
Conflicts:
tccelf.c
tccpe.c
Conflicts:
tccelf.c
Diffstat (limited to 'tests/tcctest.c')
| -rw-r--r-- | tests/tcctest.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/tcctest.c b/tests/tcctest.c index 000523e..57670be 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -3370,6 +3370,37 @@ void test_asm_call(void) #endif } +#if defined __x86_64__ +# define RX "(%rip)" +#else +# define RX +#endif + +void asm_dot_test(void) +{ + int x; + for (x = 1;; ++x) { + int r = x; + switch (x) { + case 1: + asm(".text; lea S"RX",%eax; lea ."RX",%ecx; sub %ecx,%eax; S=.; jmp p0"); + case 2: + asm(".text; jmp .+6; .int 123; mov .-4"RX",%eax; jmp p0"); + case 3: + asm(".data; Y=.; .int 999; X=Y; .int 456; X=.-4"); + asm(".text; mov X"RX",%eax; jmp p0"); + case 4: + asm(".data; X=.; .int 789; Y=.; .int 999"); + asm(".text; mov X"RX",%eax; X=Y; jmp p0"); + case 0: + asm(".text; p0=.; mov %%eax,%0;" : "=m"(r)); break; + } + if (r == x) + break; + printf("asm_dot_test %d: %d\n", x, r); + } +} + void asm_test(void) { char buf[128]; @@ -3457,6 +3488,7 @@ void asm_test(void) trace_console(8, 8); test_asm_dead_code(); test_asm_call(); + asm_dot_test(); return; label1: goto label2; |
