Michael Beck [Thu, 23 Oct 2008 16:09:10 +0000 (16:09 +0000)]
- Call nodes computes always bottom, even if they have Unknown predecessors
- remove by_all_const: always saturate the type
[r23132]
Michael Beck [Thu, 23 Oct 2008 13:04:58 +0000 (13:04 +0000)]
- more work on the Unknown problems: the only
solution seems to be fixing the type of the Proj(Cond)
[r23130]
Michael Beck [Thu, 23 Oct 2008 13:01:33 +0000 (13:01 +0000)]
- example for the Unknown problem
[r23129]
Michael Beck [Thu, 23 Oct 2008 00:40:37 +0000 (00:40 +0000)]
- fixed r23120
[r23123]
Michael Beck [Wed, 22 Oct 2008 21:34:05 +0000 (21:34 +0000)]
- put verify_type() again after the "type changed" test
[r23120]
Michael Beck [Wed, 22 Oct 2008 15:59:41 +0000 (15:59 +0000)]
- kill keep-alive edges to dead blocks before doing apply_result(),
this reduces the graph and fixes the problem of dead cf to dead blocks
(which assert else)
[r23114]
Michael Beck [Wed, 22 Oct 2008 14:36:10 +0000 (14:36 +0000)]
- BugFix: fixed monotony checker, now enabled
- removed Cond hack: it does not help. Instead cond nodes
are automatically handled AFTER all data nodes by
placing them on an extra list
- BugFix: apply_cf() now remove bad cf even if the
resulting block has only one predecessor and
cannot be combined with its predecessor
- BugFix: data nodes computing Top must be replaced
by Unknown, not Bad
[r23111]
Michael Beck [Wed, 22 Oct 2008 13:44:19 +0000 (13:44 +0000)]
example for the new commutative combo
[r23104]
Michael Beck [Tue, 21 Oct 2008 17:14:06 +0000 (17:14 +0000)]
Example for optimizing non-strict programs using combo.
[r23083]
Michael Beck [Tue, 21 Oct 2008 17:08:17 +0000 (17:08 +0000)]
- activated WITH_UNKNOWN
- Hopefully fixed handling of unknown nodes for Cmp and Cond:
- let cmp nodes calculate Top like all othe data nodes: this would let
Mux nodes to calculate Unknown instead of taking the true result
- Let Cond(Top) always select FALSE/default: This is tricky. Nodes are only reavaluated
IFF the predecessor changed its type. Because nodes are initialized with Top
this never happens, let all Proj(Cond) be unreachable.
We avoid this condition by the same way we work around Phi: whenever a Block
node is placed on the list, place its Cond nodes (and because they are Tuple
all its Proj-nodes either n the cprop list)
- BugFix: Proj-Nodes are also pinned if theire predecessor is pinned
- while combo is running, add the vcg dump hook, so dumped graphes contains the
partition and the type of a node
- put simpler condition first in an if-cascade
[r23082]
Christoph Mallon [Tue, 21 Oct 2008 07:26:12 +0000 (07:26 +0000)]
Let testcase return 0.
[r23058]
Michael Beck [Mon, 20 Oct 2008 19:58:45 +0000 (19:58 +0000)]
- put freed edges into a free-list, reducing memory count used for edges
[r23051]
Michael Beck [Mon, 20 Oct 2008 19:56:45 +0000 (19:56 +0000)]
- old code probably crashes in the edge set contains already the
newly created edge, so add a panic if this happens
- put freed edges into a free-list, reducing memory count used for edges
[r23050]
Michael Beck [Mon, 20 Oct 2008 18:48:11 +0000 (18:48 +0000)]
- fixed memory leak: delete edges when a graph is deleted
[r23047]
Michael Beck [Mon, 20 Oct 2008 14:16:43 +0000 (14:16 +0000)]
- BugFix: we need an extra compute_Return(), else compute_default()
kills Return(Top) nodes ...
[r23035]
Michael Beck [Mon, 20 Oct 2008 13:53:01 +0000 (13:53 +0000)]
- comaparation of x and Top produces True, as Top is congruent to any other class
- do not replace Phi(Top, ..., x, ..., Top) -> x, this might produce non-strict programs
(does NOt happen as long WITH_UNKNOWN is undefined)
[r23033]
Michael Beck [Mon, 20 Oct 2008 13:11:10 +0000 (13:11 +0000)]
- typos fixed
- compute: check the control input only for pinned nodes (prepare for
global_cse run)
[r23031]
Sebastian Buchwald [Sun, 19 Oct 2008 13:37:45 +0000 (13:37 +0000)]
Fixed bug in conv-conv optimization: We have to assure, that we don't change the mode when deleting the conv.
[r23009]
Moritz Kroll [Sun, 19 Oct 2008 01:55:42 +0000 (01:55 +0000)]
I like zombies, but not millions of them in a hash map!!
[r23005]
Moritz Kroll [Sun, 19 Oct 2008 01:52:40 +0000 (01:52 +0000)]
Added trivial test case where optimize_reassociation will never get to a fixpoint (result will always be non-zero)
[r23004]
Christoph Mallon [Sat, 18 Oct 2008 10:56:50 +0000 (10:56 +0000)]
Add ALLOCAN() and ALLOCANZ().
[r22985]
Christoph Mallon [Sat, 18 Oct 2008 10:25:33 +0000 (10:25 +0000)]
Remove unused variable.
[r22984]
Christoph Mallon [Sat, 18 Oct 2008 10:18:53 +0000 (10:18 +0000)]
Turn alloca() with fixed size into array.
[r22983]
Christoph Mallon [Sat, 18 Oct 2008 10:00:31 +0000 (10:00 +0000)]
Remove unused variables.
[r22982]
Christoph Mallon [Sat, 18 Oct 2008 09:59:01 +0000 (09:59 +0000)]
Remove unused variable.
[r22981]
Sebastian Buchwald [Fri, 17 Oct 2008 19:05:08 +0000 (19:05 +0000)]
Free a little more memory than before.
[r22976]
Sebastian Buchwald [Fri, 17 Oct 2008 18:52:11 +0000 (18:52 +0000)]
Zero initialize allocation to avoid using uninitialized value.
[r22975]
Sebastian Buchwald [Fri, 17 Oct 2008 18:41:52 +0000 (18:41 +0000)]
typo
[r22974]
Michael Beck [Fri, 17 Oct 2008 05:07:45 +0000 (05:07 +0000)]
- add comment explaining the connection betwenn the race and Follower -> Leader transition
[r22963]
Michael Beck [Fri, 17 Oct 2008 04:40:57 +0000 (04:40 +0000)]
BugFix for a rare case:
when splitting a partition containing followers, these
might stay on the "looser" side and must be constant-propagated
then to allow them to split out.
This might be a fix for a self-made problem. We do the follower ->
leader transition on both sides while the original algo "might"
do than on the winner side only...
[r22962]
Sebastian Buchwald [Thu, 16 Oct 2008 09:07:59 +0000 (09:07 +0000)]
It's also necessary to add one rule.
[r22941]
Moritz Kroll [Thu, 16 Oct 2008 07:58:24 +0000 (07:58 +0000)]
YOU MAKE BUNNY CRY (and rebuild the libedgfe!)
[r22939]
Moritz Kroll [Thu, 16 Oct 2008 07:48:44 +0000 (07:48 +0000)]
add missing inlucde
[r22938]
Moritz Kroll [Thu, 16 Oct 2008 07:47:00 +0000 (07:47 +0000)]
add some asserts/switch to panics
[r22937]
Christoph Mallon [Thu, 16 Oct 2008 06:55:19 +0000 (06:55 +0000)]
Remove unused attribute const arch_env_t* arch_env from struct TEMPLATE_code_gen_t (no actual backend has it either).
[r22935]
Christoph Mallon [Thu, 16 Oct 2008 06:44:42 +0000 (06:44 +0000)]
Remove unnecessary global variable.
[r22934]
Christoph Mallon [Wed, 15 Oct 2008 21:39:29 +0000 (21:39 +0000)]
Remove the unused before_sched callback.
[r22932]
Christoph Mallon [Wed, 15 Oct 2008 21:37:11 +0000 (21:37 +0000)]
Follow-up to r22928: Remove arch_register_class_put().
[r22931]
Christoph Mallon [Wed, 15 Oct 2008 21:29:45 +0000 (21:29 +0000)]
Remove dumping the -am graph. It is exactly the same as the -opt graph.
[r22930]
Sebastian Buchwald [Wed, 15 Oct 2008 19:42:16 +0000 (19:42 +0000)]
Added documentation: we can construct a PBQP instance which can not be solved heuristically if we removed some address mode patterns from our pattern set.
[r22929]
Christoph Mallon [Wed, 15 Oct 2008 19:33:07 +0000 (19:33 +0000)]
Remove arch_get_allocatable_regs().
[r22928]
Sebastian Buchwald [Wed, 15 Oct 2008 19:11:56 +0000 (19:11 +0000)]
Simplify test case.
[r22927]
Michael Beck [Wed, 15 Oct 2008 19:01:28 +0000 (19:01 +0000)]
- move the helper irms_is_ to an extra enum to prevent gcc warnings
[r22926]
Michael Beck [Wed, 15 Oct 2008 18:54:44 +0000 (18:54 +0000)]
- removed old comment
- fixed indentation
[r22925]
Michael Beck [Wed, 15 Oct 2008 18:40:39 +0000 (18:40 +0000)]
- speed up mode_is_*() calls
[r22924]
Michael Beck [Wed, 15 Oct 2008 18:20:12 +0000 (18:20 +0000)]
- check if inline was already defined to prevent warning
[r22923]
Christoph Mallon [Wed, 15 Oct 2008 18:19:12 +0000 (18:19 +0000)]
Remove wrong comment.
[r22921]
Christoph Mallon [Wed, 15 Oct 2008 18:14:52 +0000 (18:14 +0000)]
Add arch_reg_out_is_allocatable().
[r22919]
Sebastian Buchwald [Wed, 15 Oct 2008 18:01:33 +0000 (18:01 +0000)]
Added users to shift.
[r22918]
Sebastian Buchwald [Wed, 15 Oct 2008 14:00:54 +0000 (14:00 +0000)]
Simplify example.
[r22915]
Sebastian Buchwald [Wed, 15 Oct 2008 13:50:29 +0000 (13:50 +0000)]
Continued example.
[r22913]
Christoph Mallon [Wed, 15 Oct 2008 13:46:33 +0000 (13:46 +0000)]
Add arch_get_irn_reg_class_out().
[r22912]
Sebastian Buchwald [Wed, 15 Oct 2008 13:11:08 +0000 (13:11 +0000)]
Continued example.
[r22911]
Sebastian Buchwald [Wed, 15 Oct 2008 11:54:27 +0000 (11:54 +0000)]
Next try to get a wrong infinity result when using PBQP transformer.
[r22905]
Christoph Mallon [Wed, 15 Oct 2008 10:15:50 +0000 (10:15 +0000)]
Directly call arch_get_register_req_out() instead of duplicating its Proj handling magic.
[r22897]
Christoph Mallon [Wed, 15 Oct 2008 10:04:02 +0000 (10:04 +0000)]
Add arch_get_register_req_out().
[r22896]
Christoph Mallon [Wed, 15 Oct 2008 09:50:20 +0000 (09:50 +0000)]
It is not sensible to query any other than the first output register requirement of a non-mode_T node.
[r22895]
Christoph Mallon [Wed, 15 Oct 2008 06:13:40 +0000 (06:13 +0000)]
Marginally reduce the number of calls to arch_get_irn_reg_class().
[r22894]
Christoph Mallon [Wed, 15 Oct 2008 05:29:52 +0000 (05:29 +0000)]
Use arch_get_register_req() instead of duplicating the code. This shows that frequency of fetching the reg reqs is even higher.
[r22893]
Moritz Kroll [Wed, 15 Oct 2008 00:31:45 +0000 (00:31 +0000)]
Made xmalloc.h C++ compatible
[r22891]
Christoph Mallon [Tue, 14 Oct 2008 20:37:46 +0000 (20:37 +0000)]
s/\<\(LC_\)\?INLINE\>/inline/.
[r22889]
Christoph Mallon [Tue, 14 Oct 2008 20:20:21 +0000 (20:20 +0000)]
Remove unused void* from arch_register_t.
[r22888]
Matthias Braun [Tue, 14 Oct 2008 13:39:30 +0000 (13:39 +0000)]
only check register_allocation when verify is enabled
[r22877]
Matthias Braun [Tue, 14 Oct 2008 13:29:28 +0000 (13:29 +0000)]
name the option 'verify' because I can never remember 'vrfy'
[r22876]
Matthias Braun [Tue, 14 Oct 2008 10:55:11 +0000 (10:55 +0000)]
use default error handler if none is specified
[r22873]
Matthias Braun [Tue, 14 Oct 2008 08:12:40 +0000 (08:12 +0000)]
Phasenkopplung Spiller/Copymin
[r22869]
Matthias Braun [Tue, 14 Oct 2008 07:32:19 +0000 (07:32 +0000)]
be consequent: don't warn about config files, simply don't read them by default
[r22868]
Matthias Braun [Tue, 14 Oct 2008 07:31:42 +0000 (07:31 +0000)]
no HAVE_CONFIG_H needed anymore
[r22867]
Michael Beck [Tue, 14 Oct 2008 01:59:40 +0000 (01:59 +0000)]
- switch -b help to "command line format", not .firmrc format ;-)
[r22866]
Michael Beck [Tue, 14 Oct 2008 01:40:12 +0000 (01:40 +0000)]
- let the compiler optimize the transformer selection IF there is nothing to select
[r22865]
Michael Beck [Tue, 14 Oct 2008 01:30:35 +0000 (01:30 +0000)]
- call be_init_modules() last, so the option order is preserved
[r22864]
Michael Beck [Tue, 14 Oct 2008 01:27:33 +0000 (01:27 +0000)]
- add options to the list tail, so they are shown in the same order they are declared
[r22862]
Michael Beck [Tue, 14 Oct 2008 01:15:09 +0000 (01:15 +0000)]
- removed useless prototype
- renamed option from "null" to "none", like all other options
[r22861]
Michael Beck [Tue, 14 Oct 2008 01:08:32 +0000 (01:08 +0000)]
- warn if a config file could not be opened
[r22860]
Michael Beck [Tue, 14 Oct 2008 01:05:01 +0000 (01:05 +0000)]
Yep, I think this is a dangerous feature, so warn about it.
Use -b config=~/.firmrc if you want to suppress this warning.
[r22859]
Michael Beck [Tue, 14 Oct 2008 00:55:07 +0000 (00:55 +0000)]
- removed useless cast
[r22858]
Michael Beck [Tue, 14 Oct 2008 00:50:55 +0000 (00:50 +0000)]
- remove expensive is_liveness_node() calls from liveness_for_node() and
put them into caller (when not already checked)
- liveness_for_node() is not called anymore from walker, fixed signature
- using post-walker leads to "mostly" sorted node array
- some small clearance
[r22857]
Michael Beck [Tue, 14 Oct 2008 00:06:39 +0000 (00:06 +0000)]
- if optimize for size, use leave and do not align labels
[r22856]
Michael Beck [Mon, 13 Oct 2008 23:08:13 +0000 (23:08 +0000)]
- Fixed doxygen comment
[r22855]
Michael Beck [Mon, 13 Oct 2008 23:06:46 +0000 (23:06 +0000)]
- add doxygen comments
[r22854]
Michael Beck [Mon, 13 Oct 2008 22:41:22 +0000 (22:41 +0000)]
- increase string length for x86 architectural options
[r22852]
Michael Beck [Mon, 13 Oct 2008 22:38:32 +0000 (22:38 +0000)]
- BugFix: DECL_DUMP() and DECL_DUMP_VALS() uses strncat() wrong, causing buffer overrun
[r22850]
Michael Beck [Mon, 13 Oct 2008 20:25:19 +0000 (20:25 +0000)]
- fix gen_Store(). Always generate integer stores for floating point constant stores.
[r22849]
Christoph Mallon [Mon, 13 Oct 2008 20:14:32 +0000 (20:14 +0000)]
Extend 8bit test optimisation to any byte when using address mode.
[r22848]
Sebastian Buchwald [Mon, 13 Oct 2008 16:29:15 +0000 (16:29 +0000)]
Always include config.h.
[r22843]
Christoph Mallon [Mon, 13 Oct 2008 11:30:45 +0000 (11:30 +0000)]
ia32 peephole: Change a Test(x, c) to 8Bit, if 0 <= c < 256 (3 byte shorter opcode).
[r22837]
Christoph Mallon [Mon, 13 Oct 2008 10:40:10 +0000 (10:40 +0000)]
Remove an unnecessary global variable, use the walker environment.
[r22836]
Christoph Mallon [Mon, 13 Oct 2008 09:18:05 +0000 (09:18 +0000)]
Use ia32_mark_non_am().
[r22834]
Christoph Mallon [Mon, 13 Oct 2008 09:16:26 +0000 (09:16 +0000)]
Use ia32_is_non_address_mode_node().
[r22833]
Christoph Mallon [Mon, 13 Oct 2008 08:58:16 +0000 (08:58 +0000)]
Improve AM folding heuristic for dest AM when it is the only user of an address calculation. Because dest AM results in two address calculation users, the address calculation was not folded.
[r22832]
Christoph Mallon [Mon, 13 Oct 2008 08:35:41 +0000 (08:35 +0000)]
Complement r22830.
[r22831]
Christoph Mallon [Mon, 13 Oct 2008 08:30:35 +0000 (08:30 +0000)]
Turn the parameter force of ia32_create_address_mode() into a bitflag.
[r22830]
Christoph Mallon [Mon, 13 Oct 2008 08:28:22 +0000 (08:28 +0000)]
Whitespace.
[r22829]
Christoph Mallon [Mon, 13 Oct 2008 08:01:30 +0000 (08:01 +0000)]
Fix bug in r22822.
[r22828]
Christoph Mallon [Mon, 13 Oct 2008 07:29:21 +0000 (07:29 +0000)]
- Move memset() in a less often executed code path.
- Remove duplicate flag.
[r22827]
Christoph Mallon [Mon, 13 Oct 2008 07:26:39 +0000 (07:26 +0000)]
Use prevents_AM() in use_dest_am().
[r22826]
Christoph Mallon [Mon, 13 Oct 2008 06:30:49 +0000 (06:30 +0000)]
Remove an unnecessary global variable, use the walker environment.
[r22825]
Christoph Mallon [Sun, 12 Oct 2008 21:50:07 +0000 (21:50 +0000)]
When optimising IncSP-IncSP ignore the anchor as user of the upper IncSP.
[r22824]
Christoph Mallon [Sun, 12 Oct 2008 20:44:19 +0000 (20:44 +0000)]
Remove is_ia32_Ld() and is_ia32_St().
[r22823]
Christoph Mallon [Sun, 12 Oct 2008 20:42:49 +0000 (20:42 +0000)]
Switchify ia32_collect_frame_entity_nodes().
[r22822]