(i.e. shift/rotate by k) of sar, rol and ror on i386 and x86_64. Only the case
without any implicit type conversions is handled for now.
git-svn-id: trunk@36753 -
there's a type conversion involved as well (e.g. uint32:=SarLongInt(unit32) ).
This only works for signed<->unsigned conversions of equal size, due to the
nature of the sar, rol and ror operations.
git-svn-id: trunk@36745 -
assignment node when applying the optloadmodifystore node transformations.
This keeps the source line info intact in the -al asm output (and probably
makes the optimization debugger friendly, although this isn't tested and not
at all guaranteed for all the other -O3 level optimizations)
git-svn-id: trunk@36256 -
checking is on, when handling the inc/dec inline nodes, instead of using
current_settings.localswitches
* when creating inline nodes in the optloadmodifystore optimization pass, copy
localswitches from the node, that is being replaced, because otherwise,
localswitches is copied from current_settings.localswitches at the time the
new node is created, and that can already be in a different state, since
optloadmodifystore is performed in a separate pass, after the current
procedure has already been parsed and in this moment, it reflects the state
of localswitches after the end of the procedure.
* these two fixes fix a bug, where an internalerror 2017032701 can happen, when
compiling with -O3 code that turns on and off range/overflow checking in the
middle of a procedure.
git-svn-id: trunk@36195 -
two implicit type conversions, inserted by the compiler. This makes it work
for smaller ints also (e.g. int16 and int8 on 32-bit platforms, etc.)
git-svn-id: trunk@36180 -
* compinnr.inc include file converted to a unit
* inline number field size stored in ppu increased from byte to longint
* inlines in the parse tree (when written with the -vp option) now printed with
their enum name, instead of number
git-svn-id: trunk@36174 -