sergei
|
eb86cd47c6
* tcgx86_64.g_proc_entry: Don't crash if 'list' is initially empty. Went unnoticed this far because ncgutil.gen_proc_entry_code adds some items before calling cg.g_proc_entry.
|
преди 9 години |
sergei
|
1b965e6766
* x86: Don't save/restore integer registers that are volatile per calling convention of current procedure. It implies that nothing will be saved for procedures with OLDFPCCALL, FAR16 and PASCAL and calling conventions. OLDFPCCALL restores behavior that was in effect before r25224.
|
преди 9 години |
Jonas Maebe
|
61e4a1b811
+ added tasmlist parameter to getintparaloc() (needed for llvm)
|
преди 10 години |
Jonas Maebe
|
67b8aceaee
* synchronized with privatetrunk till r30095
|
преди 10 години |
Jonas Maebe
|
79a06b1514
+ iphonesim/x86_64 target (64 bit iOS simulator)
|
преди 10 години |
florian
|
35a04ad095
* modified patch of Paul W to replace leave by mov/pop, resolves #26455
|
преди 10 години |
Jonas Maebe
|
d8c898742a
* handle the fact that records containing a single extended value are
|
преди 10 години |
Jonas Maebe
|
8244d366d0
- moved deallocation of NR_PIC_OFFSET_REG from the x86_64 to the i386 code
|
преди 10 години |
Jonas Maebe
|
b745dcc64c
* moved g_external_wrapper() to the hlcg, and also g_intf_wrapper() because
|
преди 11 години |
florian
|
d8c0f11ff9
+ cs_userbp optimizer switch, so on x86-64 the compiler can make use of rbp if it is not needed as frame pointer
|
преди 11 години |
sergei
|
f508442a7e
* Emit everything to the same asmlist (fixing copy-paste error).
|
преди 11 години |
sergei
|
409e176ded
* Factored reusable (SEH-related) piece of code into separate procedure.
|
преди 11 години |
sergei
|
da2887a4ec
* x86_64-win64: SEH finalization procedures have frame pointer set to RBP but since r25389 they save registers relative to RSP. Fixed offsets for .seh_savereg/.seh_savexmm directives.
|
преди 12 години |
sergei
|
e41149a7ec
* x86_64: reworked register saving/restoring to use PUSH/POP instructions for procedures with RSP-based frame and SEH finalization procedures. XMM registers are also saved/restored without involving tempgen in mentioned cases. This prevents SEH finalization procedures from saving registers in stack frame of their parent procedures, fixing incorrect unwind bytecode (Mantis #24791). It also reduces executable size (for compiler itself, by about 100Kb).
|
преди 12 години |
sergei
|
5dda96bdfe
- Tcgx86_64.init_register_allocators: removed 'preserved_by_proc' parameter, because it isn't used by RA in any way.
|
преди 12 години |
sergei
|
1f72143eef
* In preparation for fixing Mantis #24791: Copy related code from tcgx86.g_proc_entry to tcgx86_64.g_proc_entry, and remove win64-specific stuff from tcgx86 version.
|
преди 12 години |
florian
|
94cf650d9a
* use lea to adjust stack pointer, this is equal or faster on all modern CPUs than add/sub
|
преди 12 години |
Jonas Maebe
|
69c29a415f
* pass the procdef to getintparaloc instead of only the proccalloption, so
|
преди 12 години |
florian
|
2e7fe1aebd
* support of avx register requires now proper usage of R_SUBMMWHOLE
|
преди 13 години |
florian
|
7361e19799
+ support for handling OS_128/OS_S128 on 64 Bit CPUs as far as needed for method pointers in registers
|
преди 13 години |
Jonas Maebe
|
7a0ae38700
+ also specify the parameter def when allocating a parameter via
|
преди 13 години |
sergei
|
cbad0abab5
+ Platform-specific exception support for x86_64-win64. Enable by cycling with OPT=-dTEST_WIN64_SEH.
|
преди 13 години |
sergei
|
fde1695961
* tcgx86_64.g_proc_exit: restore stack pointer using value that was calculated and stored in tcgx86.g_proc_entry, instead of recalculating it again.
|
преди 13 години |
sergei
|
fffa4a35a0
* x86_64: Don't waste time initializing/finalizing saved_standard_registers and saved_mm_registers arrays on every procedure. Initialize once, reinitialize if target system happens to change, and let finalization happen implicitly on shutdown.
|
преди 13 години |
sergei
|
85f7914906
* Don't generate .seh_endprologue if SEH directives are present in the text of (pure assembler) procedure, as it results in duplicate .seh_endprologue.
|
преди 14 години |
sergei
|
4c21beb48e
win64 unwinding, misc fixes:
|
преди 14 години |
sergei
|
b997094755
+ Generate unwind bytecode for function prologues on win64.
|
преди 14 години |
sergei
|
9608c4eabe
* Interface wrappers must be global when linking smart, Mantis #19462. Other targets already have this condition in place.
|
преди 14 години |
svenbarth
|
35b47e491c
Rebase to revision 17306
|
преди 14 години |
sergei
|
c939beee70
* Changed register allocation order for x86_64, putting first registers that don't need to be preserved by procedure. This way registers needing preservation are allocated less frequently (and for non-complex leaf functions not allocated at all), reducing amount of entry/exit code.
|
преди 14 години |