| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
"-l" option"
This reverts commit 7a3f6d49415fd5f1fa99d25aba40c7884d5774a4.
|
| |
|
|
|
|
|
|
| |
example: "-lshell32" will try "shell32.def + shell32.c"
Add lib type "%s/%s.c" for tcc_add_library() ('-l' option parse)
So tcc can use all files as scripts.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the same time, increase the GCC style warning
---------------------------------------------------------------------------
int main()
{
int a[10] = {[5]=5};
return 0;
}
Disassembly of section .text:
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 81 ec 30 00 00 00 sub $0x30,%rsp
b: b8 05 00 00 00 mov $0x5,%eax
10: 89 45 ec mov %eax,-0x14(%rbp)
13: 48 b8 14 00 00 00 00 movabs $0x14,%rax
1a: 00 00 00
1d: 49 89 c2 mov %rax,%r10
20: b8 00 00 00 00 mov $0x0,%eax
25: 48 89 c6 mov %rax,%rsi
28: 48 8d 45 d8 lea -0x28(%rbp),%rax
2c: 48 89 c7 mov %rax,%rdi
2f: 4c 89 d2 mov %r10,%rdx
32: b8 00 00 00 00 mov $0x0,%eax
37: e8 fc ff ff ff callq 38 <main+0x38>
3c: 48 b8 10 00 00 00 00 movabs $0x10,%rax
43: 00 00 00
46: 49 89 c2 mov %rax,%r10
49: b8 00 00 00 00 mov $0x0,%eax
4e: 48 89 c6 mov %rax,%rsi
51: 48 8d 45 f0 lea -0x10(%rbp),%rax
55: 48 89 c7 mov %rax,%rdi
58: 4c 89 d2 mov %r10,%rdx
5b: b8 00 00 00 00 mov $0x0,%eax
60: e8 fc ff ff ff callq 61 <main+0x61>
65: b8 00 00 00 00 mov $0x0,%eax
6a: e9 00 00 00 00 jmpq 6f <main+0x6f>
6f: c9 leaveq
70: c3 retq
After the patch
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 81 ec 30 00 00 00 sub $0x30,%rsp
b: 48 b8 28 00 00 00 00 movabs $0x28,%rax
12: 00 00 00
15: 49 89 c2 mov %rax,%r10
18: b8 00 00 00 00 mov $0x0,%eax
1d: 48 89 c6 mov %rax,%rsi
20: 48 8d 45 d8 lea -0x28(%rbp),%rax
24: 48 89 c7 mov %rax,%rdi
27: 4c 89 d2 mov %r10,%rdx
2a: b8 00 00 00 00 mov $0x0,%eax
2f: e8 fc ff ff ff callq 30 <main+0x30>
34: b8 05 00 00 00 mov $0x5,%eax
39: 89 45 ec mov %eax,-0x14(%rbp)
3c: b8 00 00 00 00 mov $0x0,%eax
41: e9 00 00 00 00 jmpq 46 <main+0x46>
46: c9 leaveq
47: c3 retq
-----------------------------------------------------------------------------------
"c5.c"
int main()
{
// union st
struct st
{
char c;
short s;
// char cc[];
};
// union st
struct st
ss = { 1, 2, 3};
// int a = ss;
char cb[1] = {1,2,3};
return 0;
}
c5.c:12: warning: excess elements in struct initializer
c5.c:14: warning: excess elements in array initializer
c5.c:14: warning: excess elements in array initializer
|
| | |
|
| |
|
|
| |
I was busy recently, forget test. Thank Austin
|
| |
|
|
|
|
|
|
| |
For example:
#define TOK_ASM_weak TOK_WEAK1
#define TOK_ASM_weak TOK_WEAK
Output:
C8.c:3: warning: TOK_ASM_weak redefined
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
{
struct st {
int aa:16;
int bb:16;
} s;
s.aa = 1;
s.bb = 2;
return 0;
}
objdump -d:
elf64-x86-64
Disassembly of section .text:
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 81 ec 10 00 00 00 sub $0x10,%rsp
b: b8 01 00 00 00 mov $0x1,%eax
10: 48 89 c1 mov %rax,%rcx
13: 81 e1 ff ff 00 00 and $0xffff,%ecx
19: 8b 55 fc mov -0x4(%rbp),%edx
1c: 81 e2 00 00 ff ff and $0xffff0000,%edx
22: 09 d1 or %edx,%ecx
24: 89 4d fc mov %ecx,-0x4(%rbp)
27: b8 02 00 00 00 mov $0x2,%eax
2c: 48 89 c1 mov %rax,%rcx
2f: 81 e1 ff ff 00 00 and $0xffff,%ecx
35: c1 e1 10 shl $0x10,%ecx
38: 8b 55 fc mov -0x4(%rbp),%edx
3b: 81 e2 ff ff 00 00 and $0xffff,%edx
41: 09 d1 or %edx,%ecx
43: 89 4d fc mov %ecx,-0x4(%rbp)
46: b8 00 00 00 00 mov $0x0,%eax
4b: e9 00 00 00 00 jmpq 50 <main+0x50>
50: c9 leaveq
51: c3 retq
After the patch
Disassembly of section .text:
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 81 ec 10 00 00 00 sub $0x10,%rsp
b: 8b 45 fc mov -0x4(%rbp),%eax
e: 81 e0 00 00 ff ff and $0xffff0000,%eax
14: 83 c8 01 or $0x1,%eax
17: 89 45 fc mov %eax,-0x4(%rbp)
1a: 8b 45 fc mov -0x4(%rbp),%eax
1d: 81 e0 ff ff 00 00 and $0xffff,%eax
23: 81 c8 00 00 02 00 or $0x20000,%eax
29: 89 45 fc mov %eax,-0x4(%rbp)
2c: b8 00 00 00 00 mov $0x0,%eax
31: e9 00 00 00 00 jmpq 36 <main+0x36>
36: c9 leaveq
37: c3 retq
|
| | |
|
| |
|
|
|
|
|
|
| |
does not define can be macro_push.
And the modified tcctest.c test
2, pack: in the compiler under the mode of s1->ppfp, I have no clear ideas1->ppfp
Some advice thank you Roy to me.This patch, I hope I can pass the Roy test
|
| | |
|
| | |
|
| |
|
|
| |
first clean up
|
| |
|
|
|
|
|
|
| |
num en{a1,a2,a3};
enum en ee;
ee = 0xffffffffff;
char a;
a = 0xffff;
|
| |
|
|
|
|
| |
struct st {int a;} ss;
int b;
b = ss;
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
For example:
struct A {
int b: 16;
int c: 16
};
sizeof (struct A);
|
| |
|
|
|
|
|
| |
For example:
struct A {
int b [];
};
|
| |
|
|
|
|
|
|
|
| |
- revert to R_X86_64_PC32 for near calls on PE
- revert to s1->section_align set to zero by default
Untested. Compared to release_0_9_26 the pe-image looks back to
normal. There are some differences in dissassembly (r10/r11 usage)
but maybe that's ok.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
because:
- Constructing fp numbers isn't quite trivial
- 3 additional calls to strchr per number is noticeable slow
Also: exclude abitest.c:ret_longdouble_test2 on _WIN32
for mixed gcc/tcc scenario
test case:
- make -k test (on win32):
-2.120000 0.500000 23000000000.000000
+2.120000 0.500000 22999999999.999996
...
ret_longdouble_test2... failure
This reverts 857f7dbfa65179e6690dbee7ab915fb4458cee11
and deaee6c2496ecb25858290405fef8ef79aece979
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1: The new patch for the other machines still have the problem.
2: libcrt Rename (what if gcc had libcrt as well)
3: parse_number exact problem
4: VT_VLS is to allow tcc
Compile the following
int b = 9;
struct st {
int a;
int b [b]
};
struct st st1;
st1.b [8] = 9;
printf ("% d \ n", st1.b [8]);
tcc a problem. Due to problems in front, and now can not be improved
5: they commit much, bug difficult to lock, you can not let other people help develop.
6: ('\ t') too
Thanks to Michael and Ray
Their criticism I have benefited!
|
| |
|
|
| |
on several variables can be connected to commit in the register. I am worried whether tcc can run the os. Since my machine is ubuntu 64 bits I can test my machine.
|
| | |
|
| |
|
|
| |
Thank Roy Tam reported problems
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For example, it should look like this
High stack
-------------
----- Func_ret_sub
------------
---- Vla stack
-------------
---- Known loc
--------------
Low
Increased loc_stack () function is used for temporary stack management, call save_reg (), released by load ()
Like this
Before use
High
----- Known loc
----
---
----
---- Pop_stack
Low
loc_stack (size, 1)
After use
High
----- Known loc
---- Pop_stack
---
----
----
Low
|
| |
|
|
|
| |
Added push_macro, pop_macro support
Fix pack bug, when output with-E will pack the bug
|
| |
|
|
|
|
|
| |
generates faster code tcc
Now only for x86-64
parse_number also to reduce the reliance on third-party libraries, allowing
faster analysis tcc
|
| |
|
|
|
|
| |
ref: 2a8905c93b4f67a21e3dbf297c3e93c598831528
Sorry, I used the wrong command, I did not mean it.
Thank grischka
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The attached fix (libcrt.c) is just one example. There seem
many more such introduced from latest commits that look badly
formatted in anyone else's editors and should be fixed.
General recommended policy:
- if possible, do not add new hard tabs ('\t') at all.
Use spaces (soft tabs) instead
- in any case, configure your editor to read/write hard tabs
with width of 8 (eight)
Also:
- Avoid merge commits (unless for very good reason). Instead
use "git cherry-pick" or "git rebase" to put your commits on
top of the public branch. ref: 2a8905c93b4f67a21e3dbf297c3e93c598831528
Also:
- jiang: please explain what you are doing, in the commit message
and on the list. Subscribe to the mailing list to receive feedback
from people for your work.
For example, what was wrong with 'parse_number'? Show a test
case and how your version fixes it (it is slower btw).
|
| | |
|
| | |
|
| |
|
|
| |
to make the test more secure
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
function is used to manage loc
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|