Christoph Mallon [Wed, 27 Jul 2011 07:33:58 +0000 (09:33 +0200)]
Correct inaccurate comment: The only corner case of wrong CF in NEG+ADD as replacement for SUB is if both operands are zero.
Sebastian Buchwald [Tue, 26 Jul 2011 12:05:24 +0000 (14:05 +0200)]
Added local opt Phi(Pin,...,Pin) -> Pin(Phi(...)).
This fixes opt/fehler194.c.
Sebastian Buchwald [Tue, 19 Jul 2011 14:26:54 +0000 (16:26 +0200)]
Set ls_mode for created ia32_Test node.
Sebastian Buchwald [Tue, 19 Jul 2011 12:34:02 +0000 (14:34 +0200)]
Fixed opt/fehler193.c.
Sebastian Buchwald [Tue, 19 Jul 2011 09:01:10 +0000 (11:01 +0200)]
Added commutative optimization variants.
Sebastian Buchwald [Tue, 19 Jul 2011 08:48:51 +0000 (10:48 +0200)]
Fixed opt/fehler192.c.
Sebastian Buchwald [Fri, 15 Jul 2011 12:04:30 +0000 (14:04 +0200)]
Prevent optimization in case of an Eor, too.
Sebastian Buchwald [Fri, 15 Jul 2011 09:26:28 +0000 (11:26 +0200)]
Quick fix for opt/fehler191.c.
This also fixes 176.gcc and 300.twolf.
Sebastian Buchwald [Fri, 15 Jul 2011 09:25:58 +0000 (11:25 +0200)]
Fixed typo.
Matthias Braun [Mon, 11 Jul 2011 11:34:47 +0000 (13:34 +0200)]
skip Tuples in mode_b lowerer
Matthias Braun [Tue, 21 Jun 2011 19:36:07 +0000 (21:36 +0200)]
use @progbits with .ctors/.dtors section (see also #
0000066)
Julian Oppermann [Tue, 28 Jun 2011 12:10:08 +0000 (14:10 +0200)]
Don't combine blocks if the first one ends with a Raise.
Michael Beck [Sat, 25 Jun 2011 16:15:05 +0000 (18:15 +0200)]
C99 feature removed.
Michael Beck [Sat, 25 Jun 2011 15:52:30 +0000 (17:52 +0200)]
Fixed windows build after lpp merge.
Andreas Zwinkau [Fri, 24 Jun 2011 15:33:47 +0000 (17:33 +0200)]
Merge Fix: Spills have ProjMs now
Andreas Zwinkau [Fri, 24 Jun 2011 15:30:12 +0000 (17:30 +0200)]
Fix: Spills have ProjMs now
Andreas Zwinkau [Fri, 24 Jun 2011 13:18:09 +0000 (15:18 +0200)]
Add lpp to Makefile
Matthias Braun [Mon, 20 Jun 2011 17:47:51 +0000 (19:47 +0200)]
fix more cparser warnings, cleanup some libcore code
Matthias Braun [Mon, 20 Jun 2011 12:54:30 +0000 (14:54 +0200)]
fix bug in lower_calls (found by cparser warning)
Matthias Braun [Mon, 20 Jun 2011 10:59:02 +0000 (12:59 +0200)]
further cleanup of lpp code
Matthias Braun [Mon, 20 Jun 2011 10:35:50 +0000 (12:35 +0200)]
lpp: adapt to firm coding conventions, warning fixes, cleanup
Matthias Braun [Fri, 17 Jun 2011 21:22:50 +0000 (23:22 +0200)]
add a new aliasing rule (struct access != variable)
Matthias Braun [Fri, 17 Jun 2011 19:33:28 +0000 (21:33 +0200)]
fix switch lowerer messing up default_proj in some cases
Matthias Braun [Fri, 17 Jun 2011 19:32:55 +0000 (21:32 +0200)]
fix cparser warnings
Matthias Braun [Wed, 15 Jun 2011 12:59:56 +0000 (14:59 +0200)]
let backends report their machine_size and the size of long double if supported
Christoph Mallon [Fri, 17 Jun 2011 12:07:29 +0000 (14:07 +0200)]
Work around the PIC-in-switch problem by setting the no_pic_adjust flag.
This seems wrong. GCC uses PIC for switch on OS X.
Christoph Mallon [Fri, 17 Jun 2011 09:22:17 +0000 (11:22 +0200)]
Correct usage of ia32_emitf() in emit_ia32_SwitchJmp().
Christoph Mallon [Fri, 17 Jun 2011 09:21:39 +0000 (11:21 +0200)]
Reduce code duplication and resolve inconsistencies (due to code duplication) in ia32_emitf().
Christoph Mallon [Fri, 17 Jun 2011 04:08:52 +0000 (06:08 +0200)]
s/threat/treat/.
Matthias Braun [Thu, 16 Jun 2011 14:29:03 +0000 (16:29 +0200)]
first experimental version of gurobi ILP solver
Sebastian Hack [Thu, 16 Jun 2011 13:50:22 +0000 (15:50 +0200)]
outsourced some functionality
adapted to changes
Matthias Braun [Thu, 16 Jun 2011 11:50:54 +0000 (13:50 +0200)]
remove remaining WITH_ILP uses, fix bug introduced when adapting lpp
Matthias Braun [Thu, 16 Jun 2011 11:32:06 +0000 (13:32 +0200)]
we always have liblpp now, remove WITH_ILP flag
Matthias Braun [Wed, 15 Jun 2011 10:43:56 +0000 (12:43 +0200)]
fix a bunch of warnings reported by cparser
Sebastian Hack [Thu, 16 Jun 2011 10:58:11 +0000 (12:58 +0200)]
added lpp
Matthias Braun [Wed, 15 Jun 2011 08:17:42 +0000 (10:17 +0200)]
some cleanups to opt/loop.c
The optimisation still doesn't appear to do anything for me...
Matthias Braun [Sat, 11 Jun 2011 13:05:08 +0000 (15:05 +0200)]
add some const qualifiers to backedges query functions
Matthias Braun [Thu, 9 Jun 2011 16:55:48 +0000 (18:55 +0200)]
unify sparc/ia32 SwitchJmp handling
Andreas Zwinkau [Fri, 10 Jun 2011 12:20:01 +0000 (14:20 +0200)]
improve jumpthreading comments
Andreas Zwinkau [Wed, 8 Jun 2011 14:18:59 +0000 (16:18 +0200)]
Revert "jumpthreading must not split edges"
This reverts commit
2dc832999c2d0b91b1d7eb8a5d3de4b89ce5552a.
The commit made jumpthreading "more conservative", which fixed the
problem. However, it is not a good solution in general.
We need a bigger rewrite of opt/jumpthreading, so it analyzes then
modifies the graph instead of on-the-fly changes. This prevents the
infinite loop, which would e.g. happen with such a cf graph:
\ A \ A
__\ | __\ |
| B | => | B | => ...
| / \ | | / \ |
| D | | E |
| \| | \|
\ C \ D
\___/ \ /
\_C
Breaks opt/jumpthreading5 and opt/jumpthreading5b
Michael Beck [Thu, 9 Jun 2011 15:03:29 +0000 (17:03 +0200)]
Better fix for wrong tarval computation of -(infinity).
Restores the support for no infity, fixed handling of denormals.
Michael Beck [Tue, 31 May 2011 17:29:01 +0000 (19:29 +0200)]
Improved comment, small cosmetic.
Michael Beck [Tue, 31 May 2011 17:28:11 +0000 (19:28 +0200)]
Fixd typo.
Sebastian Buchwald [Thu, 9 Jun 2011 14:20:05 +0000 (16:20 +0200)]
Fixed wrong tarval computation of -(infinity).
Sebastian Buchwald [Wed, 8 Jun 2011 12:56:38 +0000 (14:56 +0200)]
Fixed some typos.
Christoph Mallon [Thu, 9 Jun 2011 12:53:06 +0000 (14:53 +0200)]
Include begin.h and end.h in the generated headers.
Christoph Mallon [Thu, 9 Jun 2011 12:52:19 +0000 (14:52 +0200)]
Fix typo.
Matthias Braun [Thu, 9 Jun 2011 11:49:58 +0000 (13:49 +0200)]
add missing FIRM_API prefixes
Michael Beck [Wed, 8 Jun 2011 17:39:39 +0000 (19:39 +0200)]
Removed the callee/caller saved flag from register specification.
The callee/caller saved information is not constant accross different
ABI's, so don't make it constant. Instead, all BE that still use beabi
provide a callback now.
This allows to implement support for x64_64/Win32 and is a necessary step
for the combined x86 BE.
Matthias Braun [Wed, 8 Jun 2011 17:08:50 +0000 (19:08 +0200)]
verify nodes before optimizing them
Andreas Zwinkau [Wed, 8 Jun 2011 11:19:33 +0000 (13:19 +0200)]
jumpthreading must not split edges
* the splitted edge is never critical, so the name was misleading
* it might result in an infinite loop
fixes opt/jumpthreading5 and opt/jumpthreading5b
Matthias Braun [Tue, 7 Jun 2011 11:03:07 +0000 (13:03 +0200)]
adapt to firm coding conventions, avoid warnings by using INT_TO_PTR and PTR_TO_INT
Matthias Braun [Tue, 7 Jun 2011 10:39:25 +0000 (12:39 +0200)]
fix a few comment typos
Andreas Zwinkau [Mon, 6 Jun 2011 09:30:00 +0000 (11:30 +0200)]
Fix some types
Fixes issue 64, because casting long to int does work on 64bit.
Matthias Braun [Wed, 1 Jun 2011 14:15:43 +0000 (16:15 +0200)]
experimental patch to limit GCSE so we don't produce partially dead code like crazy
Matthias Braun [Wed, 1 Jun 2011 13:56:48 +0000 (15:56 +0200)]
lower small switches to ifs
Andreas Zwinkau [Wed, 1 Jun 2011 13:48:29 +0000 (15:48 +0200)]
remove bads in backend
Like the comment says "we can't have Bad-blocks".
However, optimize_cf does not remove them anymore.
Andreas Zwinkau [Wed, 1 Jun 2011 12:56:25 +0000 (14:56 +0200)]
lower_dw must deactivate edges
There might be some ProjL nodes reachable via out edges
and the following "local" phase does enqueue_users for
optimized nodes, which might visit the 'undead' ProjL.
Matthias Braun [Tue, 31 May 2011 14:27:06 +0000 (16:27 +0200)]
rework fragile ops to have a throws_exception attribute
Matthias Braun [Wed, 1 Jun 2011 12:06:54 +0000 (14:06 +0200)]
change pn_XXX_max enum to really be the maximum pn and not maximum+1, add n_XXX_max enum
Christoph Mallon [Wed, 1 Jun 2011 06:20:31 +0000 (08:20 +0200)]
Assert that the given node in set_r_cur_block() has mode BB.
Christoph Mallon [Wed, 1 Jun 2011 06:22:44 +0000 (08:22 +0200)]
Reduce code duplication: Implement set_cur_block() by calling set_r_cur_block().
Matthias Braun [Tue, 31 May 2011 11:23:44 +0000 (13:23 +0200)]
always transform integer abs, even in GRAPH_STATE_KEEP_MUX
Matthias Braun [Tue, 31 May 2011 11:19:03 +0000 (13:19 +0200)]
fix transform_node_Cmp
Matthias Braun [Tue, 31 May 2011 10:44:52 +0000 (12:44 +0200)]
Introduce flip-flopping normalisations
There are cases where we can normalize in 2 directions and both have
their merits. Just do both in this case. The frontend should at some
point set IRG_GRAPH_STATE_NORMALISATION2 to trigger the 2nd direction.
Matthias Braun [Fri, 27 May 2011 16:21:46 +0000 (18:21 +0200)]
irverify: simplify/refactor internal interfaces
Matthias Braun [Fri, 27 May 2011 16:21:17 +0000 (18:21 +0200)]
a const ir_graph is enough for get_idx_irn
Matthias Braun [Fri, 27 May 2011 14:57:31 +0000 (16:57 +0200)]
fragile nodes must be exception or memory pinned
Matthias Braun [Mon, 30 May 2011 21:18:31 +0000 (23:18 +0200)]
move integer abs optimisation from backend to the middleend
Matthias Braun [Mon, 30 May 2011 18:24:08 +0000 (20:24 +0200)]
reverse direction of bitop/shift normalisation
Andreas Zwinkau [Tue, 31 May 2011 10:56:27 +0000 (12:56 +0200)]
optimize_blocks ignores unreachable blocks
Fixes opt/ioet.c
Andreas Zwinkau [Tue, 31 May 2011 08:55:47 +0000 (10:55 +0200)]
Cosmetics in cfopt
* set_irg_outs_inconsistent is unnecessary as exchange does that already
* "useless if optimization" was a confusing comment
* more precise type: int -> block_flags_t
Andreas Zwinkau [Tue, 31 May 2011 08:50:49 +0000 (10:50 +0200)]
Fix "Some cleanup of cfopt."
The remove_empty_blocks function must be used for a pre-walker, otherwise
it might be called on blocks, which were optimized away. Consider infinite
loops and the Keep edges:
\ ___
B |
\ /
Empty
/
/ Keep Edge!
In this example, we must not call remove_empty_blocks on Empty,
after we called it on B, but a post walker would do that.
unknown [Mon, 30 May 2011 21:59:06 +0000 (23:59 +0200)]
Improved doxygen docu.
unknown [Mon, 30 May 2011 17:00:18 +0000 (19:00 +0200)]
Some cleanup of cfopt.
- renamed clear_link() to clear_link_and_mark_blocks_removable()
- renamed optimize_conds() to optimize_ifs()
- simplified has_*() implementations
- made some walker POST walker
- invalidate out edges
- and add some doxygen docu
- fixed some typos
- adapt to firm indentation style
Matthias Braun [Mon, 30 May 2011 14:21:52 +0000 (16:21 +0200)]
improve our 'don't use AM' heuristic: immediates do not increase register pressure
Christoph Mallon [Fri, 27 May 2011 17:05:29 +0000 (19:05 +0200)]
Use XMALLOCF*().
Andreas Zwinkau [Mon, 30 May 2011 13:46:33 +0000 (15:46 +0200)]
Fix opt/inline.c
Matthias Braun [Sun, 29 May 2011 11:33:26 +0000 (13:33 +0200)]
localopt/lower_dw opt: a==b && c==d => (a^b)|(c^d)==0
Matthias Braun [Sat, 28 May 2011 14:59:47 +0000 (16:59 +0200)]
implement Cmp(Conv(x),Const) => Cmp(x,Const)
Michael Beck [Fri, 27 May 2011 21:19:02 +0000 (23:19 +0200)]
Fixed typos.
Michael Beck [Fri, 27 May 2011 21:12:27 +0000 (23:12 +0200)]
C99 feature removed.
Michael Beck [Fri, 27 May 2011 21:11:32 +0000 (23:11 +0200)]
Fixed calculation of meet blocks broken in
4db6c5b3.
Andreas Zwinkau [Fri, 27 May 2011 13:59:55 +0000 (15:59 +0200)]
cfopt must maintain Bad structure
Sebastian Buchwald [Fri, 27 May 2011 13:44:32 +0000 (15:44 +0200)]
Removed unused variable.
The get_n in the foreach loop is a macro and not a use of the function.
Matthias Braun [Fri, 27 May 2011 12:41:42 +0000 (14:41 +0200)]
merge start-block successor with start-block in backend (necessary after equivalent_node_Block is gone)
Matthias Braun [Fri, 27 May 2011 13:22:17 +0000 (15:22 +0200)]
fix activate_backedges failing for nodes with Deleted block in the identities table
Matthias Braun [Fri, 27 May 2011 11:54:58 +0000 (13:54 +0200)]
implement 'x-(x&y) => x & ~y' localopt
Matthias Braun [Fri, 27 May 2011 08:09:41 +0000 (10:09 +0200)]
implement/refactor x&~x, x|~x, x^~x and x+~x localopts
Christoph Mallon [Fri, 27 May 2011 13:25:03 +0000 (15:25 +0200)]
struct ir_settings_if_conv_t does not exist anymore.
Christoph Mallon [Fri, 27 May 2011 09:04:43 +0000 (11:04 +0200)]
Make the elements of binary_table[] const.
Sebastian Buchwald [Fri, 27 May 2011 11:31:47 +0000 (13:31 +0200)]
Adapted some issues noticed during removal of unused variables.
Sebastian Buchwald [Fri, 27 May 2011 11:29:10 +0000 (13:29 +0200)]
Fixed some warning about unused variables.
Sebastian Buchwald [Wed, 25 May 2011 12:28:13 +0000 (14:28 +0200)]
Fixed some typos.
Andreas Zwinkau [Fri, 27 May 2011 10:12:38 +0000 (12:12 +0200)]
fp-vrp transfer function ignore Bads
Since Bads have modes now the check for mode_X initialized the bitinfo,
which results in incorrect reachability information.
Andreas Zwinkau [Fri, 27 May 2011 08:38:33 +0000 (10:38 +0200)]
edges deactivate fix
Broken with csmith 2.0.0 seed
909842313
in libFirm
1953ce88fe94d589a9b47d2ab8969c21bfb55b3a
Matthias Braun [Sat, 7 May 2011 13:47:01 +0000 (15:47 +0200)]
Do not generate declaration for non-existing arch_get_n_regs()
Matthias Braun [Thu, 26 May 2011 16:37:00 +0000 (18:37 +0200)]
fix ShlD/ShrD not getting generated in some cases
Andreas Zwinkau [Thu, 26 May 2011 13:44:42 +0000 (15:44 +0200)]
Another Bad mode fix
Matthias Braun [Thu, 26 May 2011 11:08:59 +0000 (13:08 +0200)]
convopt: fix potential bug with modulo shifts, improve cost calculation for optimizable conv(shift) combinations