(fixes most of test/units/math/troundm, although there's still an LLVM
optimizer/code generation bug that breaks some qword -> double
conversions)
git-svn-id: trunk@43829 -
hiding the method name of the wrapped routine
o also add a few more '&' prefixes to the generated wrapper code to
prevent issues when keywords are used as identifiers
git-svn-id: trunk@40634 -
so that they can still be freed after the reference has been changed
(e.g. in case of array indexing or record field accesses) (mantis #33628)
git-svn-id: trunk@38814 -
TP-style object to another and the sizes differ, at least if they are
related
* restructured and commented the LLVM type conversion checks
git-svn-id: trunk@35137 -
floating point type to currency, as fptosui is defined as always rounding
to zero while on other platforms we use the FPU's current rounding mode
(fixes webtbs/tw21449 for LLVM, and also webtbs/tw24197 because LLVM's
code generated for fptosui temporarily changes the FPU control word so
it rounds to zero and also to disable FPU exceptions)
git-svn-id: trunk@35061 -
the buffer in the type, and support typecasting the typed file to a
different size (needed to be able to pass it to the compiler helpers that
expected a "TypedFile", whose buffer is 0 bytes and which hence will
always have a smaller size than the original type) (fixes test/tisoext1)
git-svn-id: trunk@35017 -
o separate information for reading and writing, because e.g. in a
try-block, only the writes to local variables and parameters are
volatile (they have to be committed immediately in case the next
instruction causes an exception)
o for now, only references to absolute memory addresses are marked
as volatile
o the volatily information is (should be) properly maintained throughout
all code generators for all archictures with this patch
o no optimizers or other compiler infrastructure uses the volatility
information yet
o this functionality is not (yet) exposed at the language level, it
is only for internal code generator use right now
git-svn-id: trunk@34996 -
are the same in case of open arrays (their size can't be determined at
compile time) -- this is just a sanity check, which can't be performed in
this case
git-svn-id: trunk@33979 -
pasbool8type for this results in too much trouble (we mustn't use i1
for parameters, because then LLVM will try to apply the ABI convention
for passing "1 bit" values, or in records because then this may
result in unwanted bitpacking). Downside: the new LLVMBool1 type is
also exposed in the system unit, because we need it to define LLVM
intrinsics...
git-svn-id: trunk@33726 -
inserttypeconv()
o keep typeconversions between structurally equivalent but semantically
different procvardefs for LLVM and JVM, because they're different
types there
git-svn-id: trunk@32904 -
labels of LOC_JUMP in the node's location. This generates some extra jumps
for short circuit boolean and/or-expressions if optimizations are off, but
with optimisations enabled the generated code is the same (except for JVM
because the jump threading optimisation isn't enabled there yet).
git-svn-id: trunk@31431 -
o the generic implementation ignores the need for bitcasts from pointers to
ordinals and vice versa, and also hacks around with offsets
git-svn-id: branches/hlcgllvm@28206 -