Matthias Braun [Fri, 29 Apr 2011 16:18:55 +0000 (18:18 +0200)]
only calculate dominance if CFG verification was fine to avoid crashs/endless loops
Matthias Braun [Fri, 29 Apr 2011 15:52:14 +0000 (17:52 +0200)]
cleanup/partly rewrite code_placement algo
Michael Beck [Sat, 30 Apr 2011 23:21:37 +0000 (01:21 +0200)]
Further push size_t.
Michael Beck [Sat, 30 Apr 2011 23:11:49 +0000 (01:11 +0200)]
C99 feature removed.
Christoph Mallon [Fri, 29 Apr 2011 11:50:24 +0000 (13:50 +0200)]
Add simple transfer function for Confirm in fp-vrp.
Matthias Braun [Fri, 29 Apr 2011 11:11:58 +0000 (13:11 +0200)]
do not kill unreachable code in gcse
Christoph Mallon [Fri, 29 Apr 2011 10:52:53 +0000 (12:52 +0200)]
Improve and correct fp-vrp transformation.
- Set modified flag when unreachble nodes are removed.
- Remove trivially unreachble blocks, which have no bitinfo.
- Consider that unreachble blockes are replaced by Bad before the nodes they contain.
Christoph Mallon [Thu, 28 Apr 2011 12:56:27 +0000 (14:56 +0200)]
Clean up in ifconv a bit.
Matthias Braun [Thu, 28 Apr 2011 14:51:02 +0000 (16:51 +0200)]
add libfirmprof helper library
Matthias Braun [Thu, 28 Apr 2011 14:47:06 +0000 (16:47 +0200)]
improve firm profiler (based on patch by Steven Schäfer)
Matthias Braun [Thu, 28 Apr 2011 08:27:58 +0000 (10:27 +0200)]
dump postdom info in vcg graphs
Matthias Braun [Wed, 27 Apr 2011 16:50:50 +0000 (18:50 +0200)]
fix an intrinsic lower not reporting changes
Matthias Braun [Wed, 27 Apr 2011 16:19:56 +0000 (18:19 +0200)]
fix lower_copyB not invalidating irn_outs
Matthias Braun [Wed, 27 Apr 2011 14:49:16 +0000 (16:49 +0200)]
improve fp-vrp unreachable code handling
Matthias Braun [Thu, 21 Apr 2011 13:58:53 +0000 (15:58 +0200)]
Simplify handling of unreachable code
See http://www.libfirm.org/Unreachable_Code for details
Matthias Braun [Thu, 28 Apr 2011 08:47:51 +0000 (10:47 +0200)]
Verify that each Cond has a true/false/default Proj
Matthias Braun [Wed, 27 Apr 2011 11:47:30 +0000 (13:47 +0200)]
add cfg verifier ensuring 1 cfop per block and only 1 user for each mode_X node
Matthias Braun [Wed, 27 Apr 2011 11:46:56 +0000 (13:46 +0200)]
add unknown_jump opflag for the special case of a jump where we can't directly influence the destination and can't predict/change them
Matthias Braun [Wed, 27 Apr 2011 11:41:13 +0000 (13:41 +0200)]
remove obsolete #defines
Matthias Braun [Wed, 27 Apr 2011 11:34:45 +0000 (13:34 +0200)]
cleanup/reformat irop_t.h
Matthias Braun [Wed, 27 Apr 2011 11:22:31 +0000 (13:22 +0200)]
verify that the predecessor of a block is a cfop
Matthias Braun [Tue, 26 Apr 2011 17:24:37 +0000 (19:24 +0200)]
little cleanup in block walker code
Matthias Braun [Tue, 26 Apr 2011 17:24:07 +0000 (19:24 +0200)]
make verifier a bit less strict for out-edges to dead code
Matthias Braun [Tue, 26 Apr 2011 10:28:54 +0000 (12:28 +0200)]
fix warnings
Matthias Braun [Thu, 21 Apr 2011 09:30:00 +0000 (11:30 +0200)]
slight cleanup of ifconv code
Sebastian Buchwald [Thu, 28 Apr 2011 08:13:05 +0000 (10:13 +0200)]
Fixed size_t related warning.
Andreas Zwinkau [Tue, 26 Apr 2011 15:25:54 +0000 (17:25 +0200)]
Better fix for opt/ldst.c
This avoids a Load without ProjM, instead of handling this case.
Reverts the previous commit.
Andreas Zwinkau [Tue, 26 Apr 2011 12:04:00 +0000 (14:04 +0200)]
Fix opt/ldst.c
A Load might not have a ProjM
Michael Beck [Mon, 25 Apr 2011 21:00:28 +0000 (23:00 +0200)]
BugFix: fixed broken refactoring, associated link cannot be used for chains.
The associated link combinaes onbe lowered awith one unlowered type,
it cannot be used for chains of unlowered types.
Removes the get_type_[un]lowered() API and restores the
get_associated_type() API.
However, the whole concept of lowered types should be replaced by type
attributes ...
This fixes the asserts in stabs debug output.
Michael Beck [Mon, 25 Apr 2011 21:01:27 +0000 (23:01 +0200)]
Slightly improved type dumper.
Michael Beck [Sun, 24 Apr 2011 13:54:52 +0000 (15:54 +0200)]
Fixed some size_t related warnings.
Michael Beck [Sun, 24 Apr 2011 13:14:21 +0000 (15:14 +0200)]
Fixed the "naive and wrong regex stubs", so it has the right signature and returns the right value/error code now.
Michael Beck [Sun, 24 Apr 2011 12:53:34 +0000 (14:53 +0200)]
Switch irg index to type size_t, making the API more consistent.
Andreas Zwinkau [Thu, 21 Apr 2011 12:24:18 +0000 (14:24 +0200)]
Fix opt/jumpthreading4.c
Sebastian Buchwald [Wed, 20 Apr 2011 16:34:49 +0000 (18:34 +0200)]
The constructor initializes the array.
Sebastian Buchwald [Wed, 20 Apr 2011 16:30:24 +0000 (18:30 +0200)]
Use corresponding macro.
Sebastian Buchwald [Wed, 20 Apr 2011 16:28:35 +0000 (18:28 +0200)]
Simplify code.
Christoph Mallon [Wed, 20 Apr 2011 16:35:12 +0000 (18:35 +0200)]
Simplify: if (!irn_visited(x)) { mark_irn_visited(x); ... } -> if (!irn_visited_else_mark(x)) { ... }.
Andreas Zwinkau [Wed, 20 Apr 2011 14:58:26 +0000 (16:58 +0200)]
Fix opt/doms_segfault.c
Andreas Zwinkau [Wed, 20 Apr 2011 13:35:55 +0000 (15:35 +0200)]
Refactoring: remove goto
Andreas Zwinkau [Wed, 20 Apr 2011 12:49:30 +0000 (14:49 +0200)]
fix backend/lower_call3.c
Andreas Zwinkau [Wed, 20 Apr 2011 12:15:17 +0000 (14:15 +0200)]
Remove unnecessary assert
This is asserted in the next statement anyways
Andreas Zwinkau [Wed, 20 Apr 2011 12:12:06 +0000 (14:12 +0200)]
Remove type lower functions from API
* get_associated_type is unnecessary
* is_lowered_type is an internal inline function now
* set_lowered_type is an internal inline function now
Andreas Zwinkau [Wed, 20 Apr 2011 11:46:28 +0000 (13:46 +0200)]
Use get_type_[un]lowered instead of get_associated_type
Andreas Zwinkau [Wed, 20 Apr 2011 11:33:06 +0000 (13:33 +0200)]
Handle chains of lowerings correctly
Andreas Zwinkau [Wed, 20 Apr 2011 11:01:37 +0000 (13:01 +0200)]
is_lowered_type is now only used in asserts
Matthias Braun [Wed, 20 Apr 2011 09:30:42 +0000 (11:30 +0200)]
add simple load-after-load and loaf-after-store optimization as localopt
Matthias Braun [Wed, 20 Apr 2011 08:37:58 +0000 (10:37 +0200)]
add no register requirement to NoMem
Matthias Braun [Tue, 19 Apr 2011 14:33:21 +0000 (16:33 +0200)]
hide cdep struct behind getter, make it more robust with an additional skip_Id
Matthias Braun [Tue, 19 Apr 2011 14:35:25 +0000 (16:35 +0200)]
remove strange function (christophs words) and duplicated comments
Sebastian Buchwald [Wed, 20 Apr 2011 10:11:04 +0000 (12:11 +0200)]
We do not need to place Phis in dead blocks.
This fixes opt/jumpthreading3.c.
Andreas Zwinkau [Wed, 20 Apr 2011 08:25:17 +0000 (10:25 +0200)]
Refactoring
* removed unnecessary call_tp variable
* removed shadowed tp variable (twice)
Andreas Zwinkau [Wed, 20 Apr 2011 08:21:09 +0000 (10:21 +0200)]
Fix backend/lower_call2.c
Similiar to
9d207c0 the call lowering should always use the current
entity type, instead of the associate type, which may or may not be
a lowered type.
Michael Beck [Wed, 13 Apr 2011 13:37:03 +0000 (15:37 +0200)]
BugFix: Fixed wrong todo fix.
Andreas Zwinkau [Tue, 19 Apr 2011 13:38:57 +0000 (15:38 +0200)]
Fixes backend/lower_call.c
- is_lowered_type is not helpful, because the flag may already be set
by lower_calls before. This flag should probably be removed in general.
- hence lower_mtp must not check for is_lowered_type
- lower_Start must update the entity type, but not lower_irg,
otherwise lower_Start can not decide, whether a lowering is necessary.
Andreas Zwinkau [Tue, 19 Apr 2011 13:21:09 +0000 (15:21 +0200)]
no name shadowing
Matthias Braun [Mon, 18 Apr 2011 17:11:10 +0000 (19:11 +0200)]
padded return is only an obscurity of the athlon branch predicator AFAIK
Matthias Braun [Mon, 18 Apr 2011 10:45:28 +0000 (12:45 +0200)]
remove outdated README.IPD
Matthias Braun [Mon, 18 Apr 2011 10:44:15 +0000 (12:44 +0200)]
change NEWS and README to markdown format
Michael Beck [Sat, 16 Apr 2011 23:42:24 +0000 (01:42 +0200)]
C99 feature removed.
Sebastian Buchwald [Fri, 15 Apr 2011 14:12:37 +0000 (16:12 +0200)]
Prevent SSA construction from running into endless loops.
If there is an unreachable loop (i.e. there is no loop entry edge)
then there may is a cycle of blocks with only one predecessor.
Since the algorithm handle this case by returning the value of the predecessor,
this causes an endless recursion.
The fix uses the visited flag to detect such cycles.
Andreas Zwinkau [Fri, 15 Apr 2011 14:18:03 +0000 (16:18 +0200)]
Fix stupid typo
Andreas Zwinkau [Fri, 15 Apr 2011 14:12:20 +0000 (16:12 +0200)]
Harden ssacons against reintroducing a bug
* use a local variable for the walker function
* use setter function for block settings
Andreas Zwinkau [Fri, 15 Apr 2011 13:58:44 +0000 (15:58 +0200)]
Use block walk for ssa_cons_start
The node walk used before was inefficient,
since everything but blocks was ignored.
Additionally, this fixes a bug, because ssa_cons_finish already used a
block walk already, such that unreachable blocks were immatured,
but not matured in the scalar-replace optimization. This bug could
also be avoided by ensuring cfopt before scalar-replace, but keeping
ssacons start and finish symmetric seems to be more robust.
Matthias Braun [Fri, 15 Apr 2011 12:41:13 +0000 (14:41 +0200)]
fix mismatched decl/implementation
Matthias Braun [Fri, 15 Apr 2011 12:28:41 +0000 (14:28 +0200)]
implement some cases of =A asm-constraint
Matthias Braun [Fri, 15 Apr 2011 11:02:31 +0000 (13:02 +0200)]
fix cmp_ASM_attr
Matthias Braun [Thu, 14 Apr 2011 16:24:40 +0000 (18:24 +0200)]
fix cparser warnings
Matthias Braun [Thu, 14 Apr 2011 16:20:36 +0000 (18:20 +0200)]
update automake stuff for release
Matthias Braun [Thu, 14 Apr 2011 13:40:08 +0000 (15:40 +0200)]
assume regex.h exists
Matthias Braun [Thu, 14 Apr 2011 13:22:48 +0000 (15:22 +0200)]
avoid zlib dependency
Matthias Braun [Thu, 14 Apr 2011 13:18:54 +0000 (15:18 +0200)]
assume we always have strings.h
Matthias Braun [Thu, 14 Apr 2011 12:51:51 +0000 (14:51 +0200)]
nobody needs alloca.h these days (hopefully) - using HAVE_s in public headers is wrong anyway
Matthias Braun [Thu, 14 Apr 2011 12:39:53 +0000 (14:39 +0200)]
remove configfile parsing stuff, this also eliminates the dependency on bison/flex
Matthias Braun [Thu, 14 Apr 2011 12:38:35 +0000 (14:38 +0200)]
simplify/refactor fltcalc code (avoid some macros)
Matthias Braun [Thu, 14 Apr 2011 10:37:45 +0000 (12:37 +0200)]
assume everyone except msvc has long double (it's C99 after all)
Matthias Braun [Thu, 14 Apr 2011 10:29:54 +0000 (12:29 +0200)]
minimize number of build variants: always enable statistics
Matthias Braun [Thu, 14 Apr 2011 09:24:41 +0000 (11:24 +0200)]
remove unused code
Matthias Braun [Wed, 13 Apr 2011 16:59:21 +0000 (18:59 +0200)]
NEWS update
Matthias Braun [Wed, 13 Apr 2011 13:54:04 +0000 (15:54 +0200)]
fix warning
Matthias Braun [Wed, 13 Apr 2011 13:51:18 +0000 (15:51 +0200)]
remove unused code
Christoph Mallon [Fri, 15 Apr 2011 13:52:18 +0000 (15:52 +0200)]
Change use of rdtsc so it works with AMD64, too.
Andreas Zwinkau [Fri, 15 Apr 2011 12:21:14 +0000 (14:21 +0200)]
Use get/set functions instead of direct access to is_matured
Christoph Mallon [Thu, 14 Apr 2011 17:36:39 +0000 (19:36 +0200)]
Try fixing if-conversion in presence of endless loops.
Merge the lower block into the upper block (instead of the other way round), so we do not turn the upper block, which might still be in the DFS stack, into and ID node.
Christoph Mallon [Thu, 14 Apr 2011 14:42:47 +0000 (16:42 +0200)]
Revert "Let the block walker enter endless loops only at kept blocks, not Phis."
It does not fix the if-conv problem (there can still be odd keeps into if diamonds) and it also breaks removal of unreachable code, which is only kept at PhiMs.
This reverts commit
351a807ef7c6225b11cc3ac88be60ea0c9db9b7f.
Christoph Mallon [Thu, 14 Apr 2011 12:22:20 +0000 (14:22 +0200)]
Remove the unused function fail_char().
Christoph Mallon [Thu, 14 Apr 2011 12:09:26 +0000 (14:09 +0200)]
Make debug output more portable.
Christoph Mallon [Thu, 14 Apr 2011 11:53:37 +0000 (13:53 +0200)]
Reduce code duplication in the (long)-double-int-union-hack.
Christoph Mallon [Thu, 14 Apr 2011 09:26:00 +0000 (11:26 +0200)]
Let the block walker enter endless loops only at kept blocks, not Phis.
- This is sufficient, because every endless loop must have one kept block.
- This also prevents that the if-conversion enters endless loops at strange points.
This lead to exchanging a block, which is currently being recursed, so when later returning to the exchanged block (which now is an Id-node) in the walker stuff blew up.
Matthias Braun [Wed, 13 Apr 2011 12:18:35 +0000 (14:18 +0200)]
adapt sparc backend to new prolog/epilog handling
Matthias Braun [Wed, 13 Apr 2011 13:01:29 +0000 (15:01 +0200)]
panic if TLS is found in sparc backend
Matthias Braun [Wed, 13 Apr 2011 12:12:53 +0000 (14:12 +0200)]
remove r_keep_alive and let keep_alive decide irg based on the node
Matthias Braun [Wed, 13 Apr 2011 11:06:37 +0000 (13:06 +0200)]
remove stray declaration
Michael Beck [Wed, 13 Apr 2011 11:32:36 +0000 (13:32 +0200)]
BugFix: fixed access to free'ed pointer.
Michael Beck [Wed, 13 Apr 2011 11:13:46 +0000 (13:13 +0200)]
C99 feature removed.
Matthias Braun [Wed, 13 Apr 2011 10:26:08 +0000 (12:26 +0200)]
fix incorrect and(Cmp(a,0),Cmp(b,0)) localopt
Matthias Braun [Tue, 12 Apr 2011 11:03:49 +0000 (13:03 +0200)]
add notes about const/pure properties and inifite loops
Matthias Braun [Tue, 12 Apr 2011 09:08:18 +0000 (11:08 +0200)]
avoid new_NoMem in favor or get_irg_no_mem
Matthias Braun [Mon, 11 Apr 2011 17:12:50 +0000 (19:12 +0200)]
fix some warnings by removing the strange abi_get_ignore_irn API
Matthias Braun [Mon, 11 Apr 2011 12:46:35 +0000 (14:46 +0200)]
remove old+unused code