fpc/compiler/i386
yury 862348c317 * Keep the GOT offset in a virtual register for i386 non-darwin platforms.
It fixes PIC code generation with GOT for i386 with enabled optimizations. Bugs #28667, #28668. 
  Prior the fix I have not been able to compile even RTL with -O2 due to not enough free registers, since EBX is reserved for GOT.

  It can be further optimized to teach register allocator to not spill the GOT register if possible.
  

git-svn-id: trunk@32020 -
2015-10-12 08:02:56 +00:00
..
aopt386.pas - removed long deprecated/buggy assembler cse optimiser for i386 2015-05-09 17:25:07 +00:00
cgcpu.pas * Keep the GOT offset in a virtual register for i386 non-darwin platforms. 2015-10-12 08:02:56 +00:00
cpubase.inc
cpuelf.pas
cpuinfo.pas Moved tcontrollerdatatype out into cpuinfo. 2015-09-07 20:36:54 +00:00
cpunode.pas
cpupara.pas * changed getpointerdef() into a tpointerdef.getreusable() class method 2015-06-22 08:17:49 +00:00
cpupi.pas * Keep the GOT offset in a virtual register for i386 non-darwin platforms. 2015-10-12 08:02:56 +00:00
cputarg.pas
daopt386.pas * unify x86 peephole optimizer helpers 2015-09-27 09:36:39 +00:00
hlcgcpu.pas * Keep the GOT offset in a virtual register for i386 non-darwin platforms. 2015-10-12 08:02:56 +00:00
i386att.inc
i386atts.inc
i386int.inc
i386nop.inc
i386op.inc
i386prop.inc
i386tab.inc
n386add.pas * replaced current_procinfo.currtrue/falselabel with storing the true/false 2015-08-27 18:28:57 +00:00
n386cal.pas
n386flw.pas ncal.pas: 2015-09-18 14:48:54 +00:00
n386inl.pas
n386ld.pas * factored out the loading of threadvars in its own method, and put the 2015-09-12 23:32:53 +00:00
n386mat.pas
n386mem.pas
n386set.pas
popt386.pas * popt386 uses now also all routines of aoptx86 2015-09-29 19:31:33 +00:00
r386ari.inc
r386att.inc
r386con.inc
r386dwrf.inc
r386int.inc
r386iri.inc
r386nasm.inc
r386nor.inc
r386nri.inc
r386num.inc
r386ot.inc
r386rni.inc
r386sri.inc * x86 targets: Profiling shows that quite a bit of time is spent in findreg_by_number(), despite it uses binary search. Worse, it is repeated for every piece of register information. Trying to get rid of some of these calls: rearranged registers so that their "opcode" matches 3 LSBs of superregister number (with a few exceptions described at the beginning of x86reg.dat). This allows to lookup opcodes in regval() with O(1) complexity, and removes need in rXXXop.inc files. 2013-10-03 08:08:04 +00:00
r386stab.inc
r386std.inc
ra386att.pas
ra386int.pas
rgcpu.pas
symcpu.pas * changed getpointerdef() into a tpointerdef.getreusable() class method 2015-06-22 08:17:49 +00:00