Michael Beck [Thu, 21 Aug 2008 12:42:51 +0000 (12:42 +0000)]
push_through_perm():
- fixed dominance frontier IF walking the whole block upwards
- simplified code
- hopefully better explanation how the frontier is calculated
[r21312]
Andreas Zwinkau [Thu, 21 Aug 2008 12:34:52 +0000 (12:34 +0000)]
Adding another inline assembler test
It looks strange, but icc and gcc can do it.
[r21311]
Michael Beck [Thu, 21 Aug 2008 11:41:15 +0000 (11:41 +0000)]
be_Perm_reduce: no need to allocate a temporary array on the irg's obstack, set_in_in() creates a new one
[r21310]
Christoph Mallon [Thu, 21 Aug 2008 10:58:11 +0000 (10:58 +0000)]
cc_fixed is dead, all hail stickyness_sticky!
[r21309]
Michael Beck [Thu, 21 Aug 2008 10:56:42 +0000 (10:56 +0000)]
- sticky methods can be called from outside (by inline ASM for instance) and are NOT private
[r21307]
Christoph Mallon [Thu, 21 Aug 2008 08:29:40 +0000 (08:29 +0000)]
Do it like GCC: write #APP #NO_APP around inline assembler.
[r21304]
Christoph Mallon [Thu, 21 Aug 2008 07:30:25 +0000 (07:30 +0000)]
Remove last vestiges of arch_register_req_type_should_be_different_from_all (removed in r16320).
[r21303]
Christoph Mallon [Thu, 21 Aug 2008 07:24:59 +0000 (07:24 +0000)]
Rename arch_register_req_type_should_be_different to the more appropriate arch_register_req_type_must_be_different.
[r21302]
Christoph Mallon [Thu, 21 Aug 2008 06:56:42 +0000 (06:56 +0000)]
Fix typo in comment.
[r21301]
Christoph Mallon [Thu, 21 Aug 2008 06:54:42 +0000 (06:54 +0000)]
When transforming an ASM "same"-constraint, copy the requirements from the other constraint, so at least we have a chance to generate correct code.
[r21300]
Michael Beck [Wed, 20 Aug 2008 22:34:56 +0000 (22:34 +0000)]
another brain damaged gcc extension
[r21297]
Sebastian Buchwald [Wed, 20 Aug 2008 16:24:55 +0000 (16:24 +0000)]
Added test case with an shift amount > 3.
[r21294]
Sebastian Buchwald [Wed, 20 Aug 2008 14:35:24 +0000 (14:35 +0000)]
Added assert for right am_scale value;
[r21291]
Christoph Mallon [Wed, 20 Aug 2008 12:51:10 +0000 (12:51 +0000)]
Do not deconv reference modes.
[r21281]
Sebastian Buchwald [Tue, 19 Aug 2008 18:56:16 +0000 (18:56 +0000)]
Added test case for Rotl node.
[r21270]
Michael Beck [Tue, 19 Aug 2008 13:40:09 +0000 (13:40 +0000)]
detect fully/partly redundant by inspection node index ...
[r21263]
Michael Beck [Tue, 19 Aug 2008 13:01:28 +0000 (13:01 +0000)]
- more doxygen comments
- first support for statistics
[r21261]
Michael Beck [Tue, 19 Aug 2008 13:00:14 +0000 (13:00 +0000)]
fixed name clash
[r21260]
Michael Beck [Tue, 19 Aug 2008 12:28:40 +0000 (12:28 +0000)]
add first statistic support for GVN-PRE and combo
[r21258]
Sebastian Buchwald [Tue, 19 Aug 2008 11:11:29 +0000 (11:11 +0000)]
Moved creation of ia32_LdTls into common transformer.
[r21255]
Michael Beck [Mon, 18 Aug 2008 19:14:36 +0000 (19:14 +0000)]
C99 features removed
[r21246]
Sebastian Buchwald [Mon, 18 Aug 2008 12:23:42 +0000 (12:23 +0000)]
Moved transformation of CopyB nodes into ia32_common_transform and use it in the pbqp transformer.
[r21241]
Sebastian Buchwald [Mon, 18 Aug 2008 08:11:20 +0000 (08:11 +0000)]
Use switch to decide which ia32 transformer is selected.
[r21234]
Christoph Mallon [Sun, 17 Aug 2008 13:38:25 +0000 (13:38 +0000)]
Use enums instead of magic numbers.
[r21232]
Christoph Mallon [Sun, 17 Aug 2008 13:31:17 +0000 (13:31 +0000)]
Resolve warning about unused label.
[r21231]
Michael Beck [Sat, 16 Aug 2008 10:10:58 +0000 (10:10 +0000)]
small improvement
[r21213]
Michael Beck [Fri, 15 Aug 2008 20:04:21 +0000 (20:04 +0000)]
- clear the descriptions if SSA construction is restarted
[r21207]
Sebastian Buchwald [Fri, 15 Aug 2008 18:33:49 +0000 (18:33 +0000)]
typo
[r21205]
Michael Beck [Fri, 15 Aug 2008 16:43:58 +0000 (16:43 +0000)]
- workround for inline of got inlined: we cannot
optimize graphs that might still be inlined because the meta-information is invalided then,
do that as an additional step
[r21200]
Michael Beck [Fri, 15 Aug 2008 15:54:48 +0000 (15:54 +0000)]
- handle endless loops now
- use resource locking functions
[r21199]
Christoph Mallon [Fri, 15 Aug 2008 09:35:31 +0000 (09:35 +0000)]
Typos.
[r21192]
Michael Beck [Fri, 15 Aug 2008 02:26:03 +0000 (02:26 +0000)]
combo does not add keep alive edges yet
[r21189]
Michael Beck [Fri, 15 Aug 2008 02:16:14 +0000 (02:16 +0000)]
- add support for Eor and Shift nodes
- do not kill Unknown
- switch Unknwon -> tarval_Top of for the moment, makes non-monotone
transfer function
[r21188]
Michael Beck [Fri, 15 Aug 2008 01:32:08 +0000 (01:32 +0000)]
example for optimizing unknown
[r21187]
Michael Beck [Fri, 15 Aug 2008 01:30:51 +0000 (01:30 +0000)]
- if all Condb has Cmp predecessors, allow Unknown nodes to produce TOP
- Cmp(a, TOP) produces !=, not TOP (like icc, Clicks work returns ==
here because they congruent, but it isn't important waht to choose as
long as it is monotone
[r21186]
Michael Beck [Fri, 15 Aug 2008 00:13:23 +0000 (00:13 +0000)]
should be enough to place the smaller part on the cprop list
[r21185]
Michael Beck [Thu, 14 Aug 2008 22:02:13 +0000 (22:02 +0000)]
updated is_real_follower(): handle other cases
[r21184]
Christoph Mallon [Thu, 14 Aug 2008 19:43:04 +0000 (19:43 +0000)]
Remove the potentially existing Proj when replacing a Cmp() by a Test().
[r21183]
Michael Beck [Thu, 14 Aug 2008 14:21:55 +0000 (14:21 +0000)]
- reverted to 2bit flags
- add partition to cprop list if followers where translated to leader :
these must propably be splitted out by split_by()
[r21174]
Michael Beck [Thu, 14 Aug 2008 13:42:14 +0000 (13:42 +0000)]
removed superfluous /*
[r21173]
Michael Beck [Thu, 14 Aug 2008 13:37:49 +0000 (13:37 +0000)]
added FS_OPT_SUB_TO_NOT and FS_OPT_SUB_TO_CONV
[r21172]
Christoph Mallon [Thu, 14 Aug 2008 11:50:29 +0000 (11:50 +0000)]
Make ICC more happy by spelling -f combo as -fcombo, so it can properly ignore "combo" and not treat it as input file.
[r21167]
Christoph Mallon [Thu, 14 Aug 2008 11:43:20 +0000 (11:43 +0000)]
Teach AM folding about Syncs. Atm this only affects Div nodes, but is useful for Call with AM (not done yet), too.
[r21164]
Christoph Mallon [Thu, 14 Aug 2008 09:37:18 +0000 (09:37 +0000)]
Local opt: -1 - x -> ~x.
[r21159]
Christoph Mallon [Thu, 14 Aug 2008 09:07:52 +0000 (09:07 +0000)]
Crash in edgfe, probably caused by asm =m constraint.
[r21158]
Christoph Mallon [Wed, 13 Aug 2008 21:19:12 +0000 (21:19 +0000)]
Small fixes, typos, style.
[r21156]
Christoph Mallon [Wed, 13 Aug 2008 21:03:05 +0000 (21:03 +0000)]
Fix stale comments.
[r21155]
Christoph Mallon [Wed, 13 Aug 2008 19:41:29 +0000 (19:41 +0000)]
Fix crash in r21138.
[r21154]
Matthias Braun [Wed, 13 Aug 2008 14:15:35 +0000 (14:15 +0000)]
introduce more generic resource reservation debug helpers instead of old set_using_xxxx functions
[r21148]
Michael Beck [Wed, 13 Aug 2008 14:02:21 +0000 (14:02 +0000)]
fastcall example
[r21147]
Matthias Braun [Wed, 13 Aug 2008 13:37:55 +0000 (13:37 +0000)]
fix debug name
[r21146]
Michael Beck [Wed, 13 Aug 2008 13:32:41 +0000 (13:32 +0000)]
- fixed fastcall/regparam/thiscall registers for ia32
[r21144]
Christoph Mallon [Wed, 13 Aug 2008 10:18:56 +0000 (10:18 +0000)]
- Introduce cc_fixed: the calling convention must not be changed later on
- Handle cc_callee_clear_stk in the x86 backend
[r21138]
Christoph Mallon [Tue, 12 Aug 2008 20:56:38 +0000 (20:56 +0000)]
Defer decision whether to create Test(x, x) instead of Cmp(x, 0) until peephole optimisation. This improves the code when Cmp(AM, 0) is undone by the flags repair phase.
[r21134]
Christoph Mallon [Tue, 12 Aug 2008 19:35:22 +0000 (19:35 +0000)]
Remove pointless assert (the node of modes is rather seldom 0 and the pointer has been dereferenced at least thrice before this point).
[r21133]
Sebastian Buchwald [Tue, 12 Aug 2008 17:23:03 +0000 (17:23 +0000)]
The PBQP transformer still works in-place...
[r21131]
Sebastian Buchwald [Tue, 12 Aug 2008 17:14:24 +0000 (17:14 +0000)]
Added missing include, so FIRM_GRGEN_BE has a chance to be defined.
[r21130]
Sebastian Buchwald [Tue, 12 Aug 2008 13:29:53 +0000 (13:29 +0000)]
The PBQP transformer works in-place, so use the old block while transform ASM nodes.
[r21123]
Matthias Braun [Tue, 12 Aug 2008 11:28:40 +0000 (11:28 +0000)]
disable load from static const optimisation for new-style initializers (until we have code for that)
[r21118]
Matthias Braun [Tue, 12 Aug 2008 11:27:24 +0000 (11:27 +0000)]
add some more assert to make sure we don't use compound_path stuff on new style initializers
[r21117]
Matthias Braun [Tue, 12 Aug 2008 08:46:42 +0000 (08:46 +0000)]
icc doesn't like -fomit-frame-pointer without -O
[r21113]
Matthias Braun [Tue, 12 Aug 2008 08:09:54 +0000 (08:09 +0000)]
don't access NULL pointers
[r21110]
Matthias Braun [Tue, 12 Aug 2008 08:08:18 +0000 (08:08 +0000)]
forgot to commit this
[r21109]
Matthias Braun [Tue, 12 Aug 2008 08:07:27 +0000 (08:07 +0000)]
do the clobber magic for all classes
[r21108]
Matthias Braun [Tue, 12 Aug 2008 08:00:14 +0000 (08:00 +0000)]
it's mine
[r21107]
Christoph Mallon [Tue, 12 Aug 2008 07:58:25 +0000 (07:58 +0000)]
Do not use clobbered GP register as input registers (not for output is implicit).
[r21106]
Christoph Mallon [Tue, 12 Aug 2008 07:56:27 +0000 (07:56 +0000)]
fehler133: edgfe handles in-out (+) constraints for asm wrong (does not generate out-value).
[r21105]
Matthias Braun [Mon, 11 Aug 2008 17:09:03 +0000 (17:09 +0000)]
more asm trickery
[r21100]
Michael Beck [Mon, 11 Aug 2008 13:54:26 +0000 (13:54 +0000)]
- special Handling for Confirm/Mux nodes needed:
only some inputs are follower inputs!
- it is enough to check the followers of the smaller split for
Follower -> Leader transition (the 'visited by both' is non-sense)
- Phi followers are disabled yet :-(
[r21096]
Sebastian Buchwald [Mon, 11 Aug 2008 13:11:08 +0000 (13:11 +0000)]
typo
[r21090]
Andreas Zwinkau [Mon, 11 Aug 2008 13:04:01 +0000 (13:04 +0000)]
two more test cases concering Convs and Divs
[r21089]
Christoph Mallon [Mon, 11 Aug 2008 11:36:24 +0000 (11:36 +0000)]
Add a switch to select the ia32 transformer.
[r21085]
Sebastian Buchwald [Mon, 11 Aug 2008 09:24:03 +0000 (09:24 +0000)]
Moved global variable heights to ia32_common_transform.
[r21082]
Michael Beck [Sun, 10 Aug 2008 21:38:20 +0000 (21:38 +0000)]
- ifconv builds Muxb nodes, so allow mode datab for Mux
[r21080]
Michael Beck [Sun, 10 Aug 2008 20:23:01 +0000 (20:23 +0000)]
- More changed:
we have to move ALL Followers to Leaders which gets hit
on both sides of the race, regardless on which side the node stay ...
(really ?)
- factor out follower_to_leader()
- check_list() added
- add always to the end of double-linked lists
- add more assertions
- do not handle follower -> leader for Phi nodes on the cprop list
(why this is needed ?)
[r21079]
Christoph Mallon [Sat, 9 Aug 2008 06:46:22 +0000 (06:46 +0000)]
Fix asm constraint check for 'I': It must be <= 31, not <= 32.
[r21073]
Christoph Mallon [Sat, 9 Aug 2008 06:44:46 +0000 (06:44 +0000)]
Fix macro test which used pbqp transformer when it should not.
[r21072]
Christoph Mallon [Sat, 9 Aug 2008 06:36:48 +0000 (06:36 +0000)]
fehler132: Endless loop in 64bit lowerer with asm-node.
[r21071]
Michael Beck [Sat, 9 Aug 2008 02:18:20 +0000 (02:18 +0000)]
- finally understand HOW n-input nodes made the Follower -> Leader transition
(read the text until end :-), this removes half of the fixes from r21061;
this simplifies segregate_def_use_chains()
- add a partition checker
- opcode contains the arity now (not clear if this is really needed)
- a lot of more assertions()
- do not kill Confirms yet
Still buggy yet :-(
[r21069]
Sebastian Buchwald [Fri, 8 Aug 2008 23:40:43 +0000 (23:40 +0000)]
Moved common code of ia32_pbqp_transform and ia32_transform into separate file.
[r21068]
Christoph Mallon [Fri, 8 Aug 2008 14:56:39 +0000 (14:56 +0000)]
Bug in edgfe for void*-arithmetic: ptr + x == ptr.
[r21063]
Michael Beck [Fri, 8 Aug 2008 08:03:06 +0000 (08:03 +0000)]
Some things not stated (or not clear) in Clicks Diss:
- when splitting partitions, n-input Identities might lose
its follower state -> place them on cprop
- the race split might choose the split out the part NOT containing the
split list g. This destroys split_by(), so we have to exchange X and X' if
this happens
- in cause_split() we have to removed all followers from the touched list:
split() doesn't work with them AND we must check the number of elements an split
with the number of leaders (last part is clearly stated in the Diss)
- a node can only be a follower if the leader is in the same partition!
- !constant for leader -> follower transition is misleading: must be neither
Top nor const (no followers in Top and const partitions)
Other changes:
- we don't have to put on the end of the unwalked set in step(), just NOT
at the start
- combined add_to_touched() and add_to_partition_touched()
- we handle n-input identities in segregate_def_use_chain(), no need for
extra handling in segregate_def_use_chain_1()
- BugFix: ensure, that a node after follower -> leader transition is only
placed on fallen once
- BugFix: errouniously deleted add_to_worklist(Y) if old type was T or Const
- clean keep-alives
[r21061]
Michael Beck [Fri, 8 Aug 2008 07:05:10 +0000 (07:05 +0000)]
- more -f combo tests
[r21058]
Christoph Mallon [Thu, 7 Aug 2008 20:40:20 +0000 (20:40 +0000)]
Transform a - (b - c) into (a - b) + c instead of a + (c - b) iff (b - c) is a pointer.
[r21056]
Christoph Mallon [Thu, 7 Aug 2008 20:13:12 +0000 (20:13 +0000)]
Disallow Sub(int, pointer).
[r21055]
Matthias Braun [Thu, 7 Aug 2008 14:59:28 +0000 (14:59 +0000)]
fehler129
[r21050]
Michael Beck [Thu, 7 Aug 2008 12:12:39 +0000 (12:12 +0000)]
- Add missing case in the identity() function
- removed warning
[r21041]
Michael Beck [Thu, 7 Aug 2008 12:02:50 +0000 (12:02 +0000)]
- speed-up: if a partition has NO follower we can use the old split algorithm
[r21039]
Michael Beck [Thu, 7 Aug 2008 11:57:14 +0000 (11:57 +0000)]
- new (hopefully better) version of the "initially all nodes are congruent leading to non-monotonic behavior" problem fix
[r21037]
Michael Beck [Thu, 7 Aug 2008 11:46:41 +0000 (11:46 +0000)]
BugFix: fixed stupid Alloc != NULL case
[r21035]
Matthias Braun [Thu, 7 Aug 2008 11:44:40 +0000 (11:44 +0000)]
kill nodes better to avoid warnings
[r21033]
Michael Beck [Thu, 7 Aug 2008 11:16:53 +0000 (11:16 +0000)]
- first version with "working" (one example) Leader/Follower support
[r21032]
Christoph Mallon [Wed, 6 Aug 2008 21:01:58 +0000 (21:01 +0000)]
Optimise strct Conv after strict Conv with same mode.
[r21023]
Christoph Mallon [Wed, 6 Aug 2008 20:13:39 +0000 (20:13 +0000)]
Fix transform_node_Cmp() (r20946): Transform Cmp(-a, -b) to Cmp(b, a), not Cmp(a, b).
[r21022]
Michael Beck [Wed, 6 Aug 2008 16:22:51 +0000 (16:22 +0000)]
op_Min and op_Max always exists
[r21018]
Michael Beck [Wed, 6 Aug 2008 14:43:04 +0000 (14:43 +0000)]
- preliminary support for followers, currently switched off
[r21017]
Michael Beck [Wed, 6 Aug 2008 14:40:00 +0000 (14:40 +0000)]
BugFix: there was already a variable named cond ...
[r21016]
Michael Beck [Wed, 6 Aug 2008 14:26:14 +0000 (14:26 +0000)]
- made default opcodes for Min, Max
[r21015]
Michael Beck [Wed, 6 Aug 2008 14:12:02 +0000 (14:12 +0000)]
- revert r20998, not that simple
- links NoMem by hand
[r21014]
Michael Beck [Wed, 6 Aug 2008 13:35:17 +0000 (13:35 +0000)]
- removed Psi nodes, Mux nodes are used again ...
[r21012]