Matthias Braun [Wed, 6 Oct 2010 08:40:40 +0000 (08:40 +0000)]
make some more optimisations independent of current_ir_graph
[r28041]
Matthias Braun [Wed, 6 Oct 2010 08:40:39 +0000 (08:40 +0000)]
make reassoc independent of current_ir_graph
[r28040]
Matthias Braun [Wed, 6 Oct 2010 08:40:38 +0000 (08:40 +0000)]
put register classes into arch_env struct, no need for complicated callbacks
[r28039]
Matthias Braun [Wed, 6 Oct 2010 08:40:37 +0000 (08:40 +0000)]
change backends to produce 1 big array with all registers
[r28038]
Matthias Braun [Wed, 6 Oct 2010 08:40:34 +0000 (08:40 +0000)]
forbid calls of new_XXX and new_d_XXX when not in phase_building (only new_r_XXX allowed)
[r28037]
Matthias Braun [Wed, 6 Oct 2010 08:40:33 +0000 (08:40 +0000)]
make firm optimisations independent of current_ir_graph
[r28036]
Matthias Braun [Wed, 6 Oct 2010 08:40:32 +0000 (08:40 +0000)]
jumpthreading: do not rely on current_ir_graph
[r28035]
Matthias Braun [Wed, 6 Oct 2010 08:40:32 +0000 (08:40 +0000)]
workaround for lower_mode_b not working correctly in combination with create_cond_set
[r28034]
Matthias Braun [Wed, 6 Oct 2010 08:40:31 +0000 (08:40 +0000)]
allow_ifconv callback may not be NULL anymore
[r28033]
Matthias Braun [Wed, 6 Oct 2010 08:40:30 +0000 (08:40 +0000)]
fix Phi getting optimized even when optimisations are disabled
[r28032]
Matthias Braun [Wed, 6 Oct 2010 08:40:29 +0000 (08:40 +0000)]
fix bug in new part_block_edges function
[r28031]
Matthias Braun [Wed, 6 Oct 2010 08:40:28 +0000 (08:40 +0000)]
fix trailing whitespaces and tabulators in the middle of a line
[r28030]
Michael Beck [Sat, 2 Oct 2010 06:34:57 +0000 (06:34 +0000)]
C99 feature removed.
[r28028]
Matthias Braun [Wed, 22 Sep 2010 14:07:44 +0000 (14:07 +0000)]
refactor mode_b lowerer to have a create_set callback
[r28023]
Matthias Braun [Wed, 22 Sep 2010 14:07:43 +0000 (14:07 +0000)]
alternative implementation of part_block which uses outedges instead of collect_phiprojs
[r28022]
Matthias Braun [Wed, 22 Sep 2010 14:07:43 +0000 (14:07 +0000)]
remove some unnecessary/confusing flags
[r28021]
Matthias Braun [Wed, 22 Sep 2010 14:07:42 +0000 (14:07 +0000)]
remove MacroBlock concept
[r28020]
Matthias Braun [Wed, 22 Sep 2010 14:07:40 +0000 (14:07 +0000)]
differentiate between Bad and Deleted (because of exchange) nodes, this avoid some invalid memory accesses when trying to get irg from a Bad node
[r28019]
Matthias Braun [Wed, 22 Sep 2010 14:07:39 +0000 (14:07 +0000)]
no need for no_float_fold hack anymore
[r28018]
Matthias Braun [Wed, 22 Sep 2010 14:07:38 +0000 (14:07 +0000)]
remove non-strict exception mode
[r28017]
Matthias Braun [Wed, 22 Sep 2010 14:07:38 +0000 (14:07 +0000)]
backend: remove unused omitleaffp option
[r28016]
Matthias Braun [Wed, 22 Sep 2010 14:07:37 +0000 (14:07 +0000)]
node generator: don't create pn_ and n_ enums if there are no members
[r28015]
Matthias Braun [Wed, 22 Sep 2010 14:07:37 +0000 (14:07 +0000)]
remove unused functions
[r28014]
Matthias Braun [Wed, 22 Sep 2010 14:07:36 +0000 (14:07 +0000)]
fix bug in switch_lowerer
[r28013]
Matthias Braun [Wed, 22 Sep 2010 14:07:35 +0000 (14:07 +0000)]
move typedefs from public header to private header
[r28012]
Matthias Braun [Wed, 22 Sep 2010 14:07:35 +0000 (14:07 +0000)]
optimisations work independently of current_ir_graph now, no need to set/restore it in node construction anymore
[r28011]
Matthias Braun [Wed, 22 Sep 2010 14:07:34 +0000 (14:07 +0000)]
remove ilp scheduler; simplify listsched interface
[r28010]
Matthias Braun [Wed, 22 Sep 2010 14:07:33 +0000 (14:07 +0000)]
eliminate the unnecessary and especially confusing concept of a 'code_generator' an isa-interface is enough
[r28009]
Matthias Braun [Wed, 22 Sep 2010 14:07:31 +0000 (14:07 +0000)]
remove some unnecessary #defines
[r28008]
Matthias Braun [Fri, 10 Sep 2010 13:29:26 +0000 (13:29 +0000)]
sparc: fix wrongly specified Stf emitter
[r28004]
Matthias Braun [Fri, 10 Sep 2010 13:29:25 +0000 (13:29 +0000)]
sparc: fix fmov emitter
[r28003]
Matthias Braun [Fri, 10 Sep 2010 13:29:25 +0000 (13:29 +0000)]
sparc: implement/fix remaining float<->int conversions
[r28002]
Matthias Braun [Fri, 10 Sep 2010 13:29:24 +0000 (13:29 +0000)]
extend switch lowerer to produce the out-of-bounds check in firm-IR if necessary
[r28001]
Matthias Braun [Fri, 10 Sep 2010 13:29:23 +0000 (13:29 +0000)]
invoke switch lowerer in target specific lowering pass
[r28000]
Matthias Braun [Fri, 10 Sep 2010 13:29:23 +0000 (13:29 +0000)]
sparc: fix fdiv having the wrong mode
[r27999]
Matthias Braun [Fri, 10 Sep 2010 13:29:22 +0000 (13:29 +0000)]
sparc: rename misnamed node Slr to Srl
[r27998]
Matthias Braun [Fri, 10 Sep 2010 13:29:22 +0000 (13:29 +0000)]
sparc: fix bug where calls with many parameters were broken
[r27997]
Matthias Braun [Fri, 10 Sep 2010 13:29:21 +0000 (13:29 +0000)]
sparc: renumber emit shortcuts to start with 0 instead of 1
[r27996]
Matthias Braun [Fri, 10 Sep 2010 13:26:25 +0000 (13:26 +0000)]
save input requirements in be_info without complicated callback
[r27995]
Matthias Braun [Fri, 10 Sep 2010 13:26:24 +0000 (13:26 +0000)]
we can do without the phi register requirement guessing nowadays
[r27994]
Matthias Braun [Fri, 10 Sep 2010 13:26:23 +0000 (13:26 +0000)]
ia32: remove unnecessary safety check
[r27993]
Matthias Braun [Fri, 10 Sep 2010 13:26:23 +0000 (13:26 +0000)]
refactoring: split stackframe handling completely from beabi struct
[r27992]
Matthias Braun [Fri, 10 Sep 2010 13:26:22 +0000 (13:26 +0000)]
lower_switch: retain debug info, some smaller cleanups
[r27991]
Matthias Braun [Fri, 10 Sep 2010 13:26:21 +0000 (13:26 +0000)]
no need for an explicit lower_mode_b pass, it should only be invoked by the backend
[r27990]
Matthias Braun [Fri, 10 Sep 2010 13:26:21 +0000 (13:26 +0000)]
remove normalize_proj_nodes, Projs aren't in the wrong place anyway (or the verifier complains)
[r27989]
Matthias Braun [Fri, 10 Sep 2010 13:26:20 +0000 (13:26 +0000)]
remove fragile_ops flag, it just suppresses valuable information and even was disabled by default
[r27988]
Matthias Braun [Fri, 10 Sep 2010 13:26:19 +0000 (13:26 +0000)]
remove some unnecessary #defines and unused code
[r27987]
Michael Beck [Wed, 8 Sep 2010 20:25:45 +0000 (20:25 +0000)]
C99 feature removed, fixed typo.
[r27979]
Matthias Braun [Mon, 6 Sep 2010 13:05:07 +0000 (13:05 +0000)]
allow backend to specify endianess, rewrite bitfield emitter to handle little and big-endian byte order
[r27974]
Matthias Braun [Mon, 6 Sep 2010 13:05:06 +0000 (13:05 +0000)]
sparc: first attempt at using delay slots
[r27973]
Matthias Braun [Mon, 6 Sep 2010 13:05:06 +0000 (13:05 +0000)]
sparc: use arch_dependent mul/div lowering
[r27972]
Matthias Braun [Mon, 6 Sep 2010 13:05:05 +0000 (13:05 +0000)]
sparc: fix bitopcc bugs
[r27971]
Matthias Braun [Mon, 6 Sep 2010 13:05:04 +0000 (13:05 +0000)]
rename heights_t to ir_heights_t, improve docu a bit, rename to heights.[ch]
[r27970]
Matthias Braun [Mon, 6 Sep 2010 13:05:04 +0000 (13:05 +0000)]
sparc: fix abort when matching addressmode Adds
[r27969]
Matthias Braun [Mon, 6 Sep 2010 13:05:03 +0000 (13:05 +0000)]
remove Abs node, backends can match the abs patterns themselfes
[r27968]
Matthias Braun [Mon, 6 Sep 2010 13:05:01 +0000 (13:05 +0000)]
remove useless code from iropt
[r27967]
Matthias Braun [Thu, 19 Aug 2010 15:56:42 +0000 (15:56 +0000)]
sparc: new patterns to match comparisons of bitoperations with zero
[r27959]
Matthias Braun [Thu, 19 Aug 2010 15:56:41 +0000 (15:56 +0000)]
sparc: implement mode-neutral matching; support immediates for Cmp node
[r27958]
Matthias Braun [Thu, 19 Aug 2010 15:56:41 +0000 (15:56 +0000)]
sparc: preliminary SwitchJmp implementation
[r27957]
Matthias Braun [Thu, 19 Aug 2010 15:56:40 +0000 (15:56 +0000)]
sparc: mostly implement reg+reg address mode
[r27956]
Matthias Braun [Thu, 19 Aug 2010 15:56:39 +0000 (15:56 +0000)]
sparc: specifying ins in constructor variants makes no sense
[r27955]
Matthias Braun [Thu, 19 Aug 2010 15:56:38 +0000 (15:56 +0000)]
a normalisation which shrinks values on the right shift operand because of modulo_shift behaviour. As a nice side-effect this simplifies the Rotl matcher
[r27954]
Matthias Braun [Thu, 19 Aug 2010 15:56:36 +0000 (15:56 +0000)]
only construct Rotl if backend supports it
[r27953]
Matthias Braun [Thu, 19 Aug 2010 15:56:36 +0000 (15:56 +0000)]
sparc: implement div instructions correctly
[r27952]
Matthias Braun [Thu, 19 Aug 2010 15:56:35 +0000 (15:56 +0000)]
sparc: rewrite address mode matching, we now use offsets for load/store nodes and need less special nodes
[r27951]
Matthias Braun [Thu, 19 Aug 2010 15:56:34 +0000 (15:56 +0000)]
sparc: remove entity_sign, gas/elf doesn't support it anyway
[r27950]
Matthias Braun [Thu, 19 Aug 2010 15:56:34 +0000 (15:56 +0000)]
sparc: no need for is_load_store attribute anymore
[r27949]
Matthias Braun [Thu, 19 Aug 2010 15:56:33 +0000 (15:56 +0000)]
new localopt: Cmp(Eor(x,y),0) <=> Cmp(x,y) for the Equals and NotEquals case
[r27948]
Matthias Braun [Thu, 19 Aug 2010 15:56:32 +0000 (15:56 +0000)]
use operands_are_normalized when permuting Not operations on Xor inputs to avoid commutative normalisation turning it back
[r27947]
Matthias Braun [Wed, 18 Aug 2010 21:50:00 +0000 (21:50 +0000)]
ia32: fix bug introduced when improving doz matcher, cleanup Mux matcher
[r27946]
Matthias Braun [Wed, 18 Aug 2010 21:49:59 +0000 (21:49 +0000)]
really keep mux intact if KEEP_MUX is enabled; cleanup and improve some Mux optimisation rules
[r27945]
Matthias Braun [Wed, 18 Aug 2010 21:49:58 +0000 (21:49 +0000)]
remove lots of unnecessary and dangerous current_ir_graph usages
[r27944]
Matthias Braun [Wed, 18 Aug 2010 13:37:11 +0000 (13:37 +0000)]
backend is responsible for defining what lowering operations need to be performed => so the logical thing is to use a backend callback for performing lowerings
[r27938]
Matthias Braun [Wed, 18 Aug 2010 13:37:10 +0000 (13:37 +0000)]
make if-conversion and archdep optimisations get their information directly from the backend without frontends needing special code to transfer these infos
[r27937]
Matthias Braun [Wed, 18 Aug 2010 13:37:09 +0000 (13:37 +0000)]
doz pattern matcher missed some cases
[r27936]
Matthias Braun [Thu, 12 Aug 2010 12:16:48 +0000 (12:16 +0000)]
identifiers starting with _ are reserved; remove this bad practice
[r27924]
Matthias Braun [Thu, 12 Aug 2010 12:16:45 +0000 (12:16 +0000)]
document the new behaviour of set_entity_owner which has been there for a while now
[r27923]
Sebastian Buchwald [Mon, 9 Aug 2010 19:58:56 +0000 (19:58 +0000)]
Adapt to coding conventions.
[r27919]
Matthias Braun [Mon, 9 Aug 2010 14:53:12 +0000 (14:53 +0000)]
sparc: redo and improve sparc immediate handling (low-part after sethi is now omitted if it is 0)
[r27918]
Matthias Braun [Mon, 9 Aug 2010 14:53:11 +0000 (14:53 +0000)]
sparc: mark Mul nodes as rematerializable
[r27917]
Matthias Braun [Mon, 9 Aug 2010 14:53:11 +0000 (14:53 +0000)]
use sub_immediate in case of add a,0x1000
[r27916]
Matthias Braun [Mon, 9 Aug 2010 14:53:10 +0000 (14:53 +0000)]
sparc: matching rules for andn and orn
[r27915]
Matthias Braun [Mon, 9 Aug 2010 14:53:09 +0000 (14:53 +0000)]
sparc: pattern to match xnor
[r27914]
Matthias Braun [Mon, 9 Aug 2010 14:53:08 +0000 (14:53 +0000)]
improved normalisation of not+eor nodes
[r27913]
Matthias Braun [Mon, 9 Aug 2010 14:53:07 +0000 (14:53 +0000)]
sparc: No need for Minus, Not, Nop nodes. Implement with the real instructions Sub, XNor and zero register
[r27912]
Matthias Braun [Mon, 9 Aug 2010 14:53:06 +0000 (14:53 +0000)]
sparc: use %g0 for 0 constants
[r27911]
Matthias Braun [Mon, 9 Aug 2010 14:53:05 +0000 (14:53 +0000)]
extend register allocation verifier to check alignment and wide constraints
[r27910]
Matthias Braun [Mon, 9 Aug 2010 14:53:04 +0000 (14:53 +0000)]
allow ignore registers as inputs of Phis; cleanup bessadestr.c
[r27909]
Matthias Braun [Mon, 9 Aug 2010 14:53:03 +0000 (14:53 +0000)]
adapt daemelspiller to wide register values
[r27908]
Matthias Braun [Mon, 9 Aug 2010 14:53:02 +0000 (14:53 +0000)]
correctly use wide values in automatic phi register requirement determination
[r27907]
Matthias Braun [Mon, 9 Aug 2010 14:53:02 +0000 (14:53 +0000)]
reformat and cleanup benode.c
[r27906]
Matthias Braun [Mon, 9 Aug 2010 14:53:01 +0000 (14:53 +0000)]
cleanup spill code; assert that no wide values are used yet
[r27905]
Matthias Braun [Mon, 9 Aug 2010 14:52:59 +0000 (14:52 +0000)]
fix beabi not setting width in register constraint
[r27904]
Matthias Braun [Mon, 9 Aug 2010 14:52:59 +0000 (14:52 +0000)]
dump double and aligned register requirements
[r27903]
Matthias Braun [Mon, 9 Aug 2010 14:52:58 +0000 (14:52 +0000)]
sparc: implement all floating point operations in single, double and quad mode
[r27902]
Matthias Braun [Mon, 9 Aug 2010 14:52:57 +0000 (14:52 +0000)]
sparc: remove old code which was only valid for old beabi handling
[r27901]
Matthias Braun [Mon, 9 Aug 2010 14:52:47 +0000 (14:52 +0000)]
cleanup, simplify hungarian algorithm implementation
[r27900]
Michael Beck [Sat, 7 Aug 2010 14:47:29 +0000 (14:47 +0000)]
Mostly reverted r27894, removed usage of unreachable.
The gain from using an extra Unreachable is rather low, plus the noreturn call must probably be keeped anyway, so revrt it again
[r27898]
Michael Beck [Sat, 7 Aug 2010 10:07:51 +0000 (10:07 +0000)]
Add an Unreachable node.
Unreachable nodes mark unreachable control flow (after noreturn calls). They
"eat" the memory, saving the two keeps used before.
Works mostly yet (scheduler issues warning about not scheduled Unreachable's)
[r27894]
Michael Beck [Sat, 7 Aug 2010 09:07:46 +0000 (09:07 +0000)]
C99 feature removed.
[r27892]