current clang versions, works around some bugs (or at least backward
incompatibilities) in the Xcode 5 linker when targeting ARM
git-svn-id: trunk@26334 -
o When expanding from a OS_8 to a 16-bit or 32-bit tcgsize, use the R_SUBH
subregister to initialize the high 16 bits of the register to zero. This
generates shorter and faster code, without increasing register
interferences, because R_SUBH has the same register constraints on i8086 as
R_SUBL, which is already used on the same imaginary register.
o After performing operations on the 8-bit subparts of a register that was
initially 16-bit, call makeregsize(OS_16) to notify the register allocator
that the register is once again 16-bit.
git-svn-id: trunk@26328 -
o set the code page of the temporary "text" file to utf-8 for writestr with
unicodestring/widestring as destination, so that no data loss can occur
(+ properly deal with cases whereby part of an utf-8 character is
written to the textbuf in this case)
o explicitly pass the code page of the destination ansistring for writestr
with ansistring as destination and set it for the temporary "text" file
o set the code page of the text file for readstr
git-svn-id: trunk@26317 -
unnecessary conversions between CP_ACP and the current actual
DefaultSystemCodePage
* call TranslatePlaceholderCP() when changing the code page of a
text file because in some cases this code page is passed directly
to widestringmanager.Wide2AnsiMoveProc() (which does not perform any
translation itself)
git-svn-id: trunk@26316 -
when converting a LOC_JUMP location to a (OS_INT<x<=32)-bit reg location
(the optimization is similar to r26314, but is for non 64-bit destinations).
git-svn-id: trunk@26315 -
when converting a LOC_JUMP location to a 64-bit reg location by only setting
the low OS_INT-sized register to 0 or 1 in the false/true label parts and then
initializing the remaining registers (obtainable via GetNextReg()) to 0 in the
common part after the jumps.
git-svn-id: trunk@26314 -
dest are subregisters of the same superregister, but of different sizes:
o Do not emit spurious moves from a register to the same register.
o Correctly support the case when converting from 16-bit to 32-bit int.
Previously it didn't work correctly, because in this particular case, due
to the way the GetNextReg scheme works, we have reg1=reg2.
git-svn-id: trunk@26313 -
converting from a LOC_FLAGS or LOC_JUMP location to a 64-bit reg location.
This fixes test/cg/tcnvint1.pp on i8086 after r26301.
git-svn-id: trunk@26312 -
+ Enable registers %i0..%i5 and %o7 for use by reg.allocator.
Some notable properties of this implementation are:
o pi_needs_got flag can be safely set during pass 2, so not setting it occasionally in pass 1 does not result in internal error.
o Reg.allocator configuration is independent from PIC. If procedure requires GOT, register %l7 is allocated at the prologue, making it unavailable to RA.
o GOT is stored in fixed %l7 register, but it is trivial to switch over to virtual register.
git-svn-id: trunk@26293 -
by translator Valdinilson Lourenco da Cunha. Mantis #23323
The copyright part of the header seemed to be mostly a general Cairo
header.
git-svn-id: trunk@26284 -