sinttype (they're the same on most platforms, except on 8 bit ones where
ossinttype is still 16 bit)
* simplified and documented second_length(), and fixed some (harmless)
errors in the used tcgsize for the resultdef (it had to be OS_SINT
rather than OS_INT -- now it's just def_cgsize(resultdef) so it's
always correct)
git-svn-id: branches/hlcgllvm@28387 -
be included at the start of the implementation of the system unit (before
the rest of except.inc)
* catch declarations in/loading from the system unit of the TExceptAddr type
* use this type instead of hardcoded size constants in the compiler
* in generic code that is active for all targets, puts its use in a virtual
method since it's only valid for targets using setjmp/longjmp-style
exception handling (and the record is not defined at all in the JVM RTL)
git-svn-id: branches/hlcgllvm@28376 -
o results in simpler code, and more importantly is required for some code
that expects a LOC_REGISTER after calling certain system unit helpers
(e.g. in ncgutil.new_exception)
git-svn-id: branches/hlcgllvm@28375 -
o there are no cpu registers on the llvm target, but generic code may still
occasionally allocate them via the generic routines in case of e.g. a
hardcoded use of a function return register
git-svn-id: branches/hlcgllvm@28373 -
second_int_to_bool() and second_bool_to_int() for certain cases, do the
same for their first_*() variants in first_bool_to_bool() so that the
expectloc is correctly initialised
o since first_int_to_bool can now be called for bool_to_bool to, make
sure we correctly handle is_boolean(left.resultdef) in that case
(integers cast to a smaller boolean type ignore the upper bits,
while with boolean to boolean they are taken into account
git-svn-id: branches/hlcgllvm@28369 -
have to emit the label we originally allocated for the fallthrough path (otherwise
the branch is not inverted at all, and moreover the caller will also emit the
original target label somewhere so it will be doubly defined)
git-svn-id: branches/hlcgllvm@28367 -
r28315 introduced an arm optimization which requires
tst rX, #imm
to work. This is not available on 16bit thumb, I've disabled that
optimization on thumb for now.
git-svn-id: trunk@28360 -
thlcgobj.paravarsym_set_initialloc_to_paraloc(): it has to be the type of
pointer in the base register, not the type of the variable (and since this
is a parameter on the stack, use voidstackpointertype rather than
getpointerdef() for i8086 compatibility)
git-svn-id: branches/hlcgllvm@28351 -
* Moved handling of 64-bit values > high(int64) to qword_to_float64, so that normalizeRoundAndPackFloat64 procedure stays unmodified compared to C source.
* Using "jamming" right shift instead of regular one, so the least significant bit is not dropped but participates in rounding.
* Take a shortcut for values with <= 53 significant bits, which are convertible into float64 exactly and do not need rounding.
git-svn-id: trunk@28346 -