Michael Beck [Thu, 29 May 2008 01:58:34 +0000 (01:58 +0000)]
- Add a peephole phase that fixes all stack offsets
[r19823]
Michael Beck [Thu, 29 May 2008 01:57:01 +0000 (01:57 +0000)]
- Emitter for IncSP emits now Add or Sub
- do not emit NOP instructions like IncSP(0) or Copy x,x
[r19822]
Michael Beck [Thu, 29 May 2008 01:55:45 +0000 (01:55 +0000)]
renamed SubSP to SubSPandCopy, add some constants
[r19821]
Michael Beck [Wed, 28 May 2008 22:47:36 +0000 (22:47 +0000)]
- moved peephole_IncSP_IncSP() to bepeephole.c, as this is a generic function and can be used from other BE's
[r19817]
Michael Beck [Wed, 28 May 2008 20:19:07 +0000 (20:19 +0000)]
simplify code
[r19816]
Michael Beck [Wed, 28 May 2008 15:06:33 +0000 (15:06 +0000)]
fixed warning
[r19815]
Michael Beck [Wed, 28 May 2008 15:05:10 +0000 (15:05 +0000)]
better version of the barrier remover (no warnings)
[r19814]
Michael Beck [Wed, 28 May 2008 14:46:49 +0000 (14:46 +0000)]
remove barrier from schedule before peephole optimization
[r19813]
Michael Beck [Wed, 28 May 2008 13:42:24 +0000 (13:42 +0000)]
implemened add esp, 4/8 -> push/push
[r19812]
Michael Beck [Wed, 28 May 2008 13:05:48 +0000 (13:05 +0000)]
fixed condition for add/sub esp, 4/8
[r19810]
Michael Beck [Wed, 28 May 2008 11:43:30 +0000 (11:43 +0000)]
bock marker can be dumped in the block title
[r19807]
Michael Beck [Wed, 28 May 2008 11:36:46 +0000 (11:36 +0000)]
- dump the block mark
- reorder output a bit
[r19806]
Michael Beck [Wed, 28 May 2008 11:29:40 +0000 (11:29 +0000)]
- added is_Id, is_CallBegin, is_Free
- placed mode #ifdef INTERPROCEDURAL_VIEW
- used is_*(x) fucntions instead of x->op == op_X
[r19805]
Michael Beck [Wed, 28 May 2008 10:38:15 +0000 (10:38 +0000)]
- added is_Filter()
- fixed is_Proj() implementation
- improved docu a bit
[r19804]
Michael Beck [Tue, 27 May 2008 17:10:02 +0000 (17:10 +0000)]
- changed docu uses Phi list instead of links now
[r19803]
Michael Beck [Tue, 27 May 2008 17:07:31 +0000 (17:07 +0000)]
Phi's are now transmitted as a Phi list, not using links
[r19802]
Michael Beck [Tue, 27 May 2008 15:35:47 +0000 (15:35 +0000)]
BugFix: phi node might be exchanged, read the next Phi before this can happen
[r19801]
Michael Beck [Tue, 27 May 2008 15:17:05 +0000 (15:17 +0000)]
- BugFix: set the mark on the right block
- fixed warning
- use get_Block_cfgpred_block() where appropriate
[r19800]
Michael Beck [Tue, 27 May 2008 14:12:04 +0000 (14:12 +0000)]
add missing non-inline versions
[r19798]
Michael Beck [Tue, 27 May 2008 13:45:31 +0000 (13:45 +0000)]
BugFix: fixed Phi-list manipulation
[r19797]
Michael Beck [Tue, 27 May 2008 13:42:08 +0000 (13:42 +0000)]
redo r19786, peculiarity has been fixed in the cparser FE
[r19796]
Matthias Braun [Tue, 27 May 2008 12:52:41 +0000 (12:52 +0000)]
need includes for alloca
[r19794]
Matthias Braun [Tue, 27 May 2008 11:44:59 +0000 (11:44 +0000)]
remove a too strict check, we can have local function entites with no irg assigned (its not useful but perfectly legal in many languages)
[r19786]
Matthias Braun [Tue, 27 May 2008 11:27:26 +0000 (11:27 +0000)]
make verifier a bit less strict about keeps
[r19784]
Matthias Braun [Tue, 27 May 2008 11:24:14 +0000 (11:24 +0000)]
do an upconv instead of panic when we do <32bit right shifts
[r19783]
Matthias Braun [Tue, 27 May 2008 07:27:57 +0000 (07:27 +0000)]
build a keep behind each pop to avoid double register warnings
[r19780]
Michael Beck [Mon, 26 May 2008 14:29:40 +0000 (14:29 +0000)]
add some comments, small cosmetic
[r19777]
Michael Beck [Mon, 26 May 2008 14:09:21 +0000 (14:09 +0000)]
small BugFix
[r19776]
Michael Beck [Mon, 26 May 2008 14:01:02 +0000 (14:01 +0000)]
must use Lg, not Ne to check for !=
[r19775]
Michael Beck [Mon, 26 May 2008 13:50:30 +0000 (13:50 +0000)]
use block Phi lists and Block marks to get rid of block_info_t
[r19774]
Michael Beck [Mon, 26 May 2008 13:37:27 +0000 (13:37 +0000)]
add *_Block_mark() api to mark easily Blocks in the graph
[r19773]
Michael Beck [Mon, 26 May 2008 12:59:43 +0000 (12:59 +0000)]
used new add_Block_phi()
[r19772]
Michael Beck [Mon, 26 May 2008 12:57:14 +0000 (12:57 +0000)]
typo fixed
[r19771]
Michael Beck [Mon, 26 May 2008 12:56:20 +0000 (12:56 +0000)]
add_Block_phi() implemented
[r19770]
Michael Beck [Mon, 26 May 2008 12:21:21 +0000 (12:21 +0000)]
C99 features removed
[r19769]
Matthias Braun [Sun, 25 May 2008 09:39:18 +0000 (09:39 +0000)]
fix a few warnings
[r19760]
Matthias Braun [Sun, 25 May 2008 09:30:08 +0000 (09:30 +0000)]
commit the beginning of advanced boolopt (had that laying around for months now - so before it gets lost...)
[r19759]
Michael Beck [Sun, 25 May 2008 03:52:05 +0000 (03:52 +0000)]
Special handling seems not to work, remove critical edges in advance
[r19758]
Michael Beck [Sun, 25 May 2008 03:42:19 +0000 (03:42 +0000)]
get rid of most Optimisation warning: found add/sub with const
[r19757]
Michael Beck [Sun, 25 May 2008 02:26:31 +0000 (02:26 +0000)]
add Christoph's loop test
[r19755]
Michael Beck [Sun, 25 May 2008 02:23:07 +0000 (02:23 +0000)]
- simplified get_effective_use_block()
- add support for mode_b nodes:
- propagate true/false
- create Phi's at dominance frontier for cond_eval()
[r19754]
Michael Beck [Sun, 25 May 2008 02:14:38 +0000 (02:14 +0000)]
- do not optimize away Confirms with Constants
[r19753]
Michael Beck [Sun, 25 May 2008 02:12:18 +0000 (02:12 +0000)]
- can now handle const-like Confirms
[r19752]
Michael Beck [Sun, 25 May 2008 02:10:49 +0000 (02:10 +0000)]
improved test: added new Confirm/cond_eval combination
[r19751]
Michael Beck [Sat, 24 May 2008 16:55:57 +0000 (16:55 +0000)]
arch_env_* macros updated
[r19750]
Michael Beck [Sat, 24 May 2008 16:35:45 +0000 (16:35 +0000)]
allocate all op attributes on block instead of a lot of malloc calls
[r19749]
Michael Beck [Sat, 24 May 2008 16:22:08 +0000 (16:22 +0000)]
- no need to add two custom pointers: the tag is now simply a 32bit number, typically a FOURCC code
[r19748]
Christoph Mallon [Sat, 24 May 2008 10:11:27 +0000 (10:11 +0000)]
When testing whether generating a Psi is allowed, check whether the mode of the compared values is <= 32 bit in the case when cmov is disallowed, too. (improved Matze's accidental commit)
[r19747]
Matthias Braun [Sat, 24 May 2008 10:08:26 +0000 (10:08 +0000)]
normalize/fix ProjM numbers, avoid dead code in some instances
[r19746]
Matthias Braun [Sat, 24 May 2008 10:05:20 +0000 (10:05 +0000)]
we can have mode_b inputs to Convs as well (I hope this fix is correct...)
[r19745]
Michael Beck [Fri, 23 May 2008 21:28:11 +0000 (21:28 +0000)]
small improvements: cache different environment members in local variables
[r19744]
Michael Beck [Fri, 23 May 2008 21:09:55 +0000 (21:09 +0000)]
- not really necessary, but makes the array size again as big as it was before iro_Last was reduced
[r19743]
Michael Beck [Fri, 23 May 2008 21:08:55 +0000 (21:08 +0000)]
- removed C99 features
- set be_ops only once
- do not overwrite already set be_ops
[r19742]
Michael Beck [Fri, 23 May 2008 21:07:30 +0000 (21:07 +0000)]
BugFix: wrong condition for Abs (this fixes Queens.c)
[r19741]
Matthias Braun [Fri, 23 May 2008 19:04:09 +0000 (19:04 +0000)]
- Aus arch_isa_t wird arch_env_t sonst ändert sich nix...
[r19740]
Matthias Braun [Fri, 23 May 2008 17:52:54 +0000 (17:52 +0000)]
we don't need no stinking selfs
[r19739]
Matthias Braun [Fri, 23 May 2008 17:37:30 +0000 (17:37 +0000)]
- arch_get_irn_ops simplified
- removed arch_irn_handler stuff
[r19738]
Michael Beck [Fri, 23 May 2008 14:48:27 +0000 (14:48 +0000)]
Removed the irn_handler stack.
[r19733]
Michael Beck [Fri, 23 May 2008 14:25:50 +0000 (14:25 +0000)]
Removed the arch_irn_handler_t. This was just an additional redirection without
greater function...
[r19732]
Michael Beck [Thu, 22 May 2008 03:04:27 +0000 (03:04 +0000)]
check for Cmp nodes before doing doz
[r19721]
Michael Beck [Thu, 22 May 2008 02:44:36 +0000 (02:44 +0000)]
- normalize Muxes a bit: this hopefully improves the code a bit
[r19720]
Michael Beck [Thu, 22 May 2008 02:42:10 +0000 (02:42 +0000)]
use is_Const()
[r19719]
Michael Beck [Thu, 22 May 2008 01:37:58 +0000 (01:37 +0000)]
missing goto added
[r19718]
Michael Beck [Thu, 22 May 2008 01:12:09 +0000 (01:12 +0000)]
- add more Mux optimization cases
- clarify some comments
[r19717]
Michael Beck [Wed, 21 May 2008 23:56:32 +0000 (23:56 +0000)]
fixed warnings
[r19716]
Michael Beck [Wed, 21 May 2008 20:50:35 +0000 (20:50 +0000)]
- placed phi_handler into the be_main environment, removing unnecessary allocations
[r19715]
Michael Beck [Wed, 21 May 2008 20:29:28 +0000 (20:29 +0000)]
- BugFix: replaced wrong cast by right code (no crash because offset is 0)
[r19714]
Michael Beck [Wed, 21 May 2008 19:13:40 +0000 (19:13 +0000)]
typos fixed
[r19713]
Michael Beck [Wed, 21 May 2008 19:12:42 +0000 (19:12 +0000)]
- fixed doxygen comments
- replaced O(n) test by O(1) test
- simplified code
[r19712]
Michael Beck [Wed, 21 May 2008 19:06:34 +0000 (19:06 +0000)]
- beo_* Opcodes are now defined in irop.h, and no more dynamically allocated
- simplified be_node_classify()
[r19711]
Michael Beck [Wed, 21 May 2008 15:11:46 +0000 (15:11 +0000)]
- add a flag to allow 2 users when matching address mode: needed for Psi nodes
- create code for unsigned Doz (a - b < 0 ? 0 : a - b)
[r19704]
Michael Beck [Wed, 21 May 2008 15:10:20 +0000 (15:10 +0000)]
typos fixed
[r19703]
Michael Beck [Wed, 21 May 2008 15:09:50 +0000 (15:09 +0000)]
assure_different_constraints():
we can safely IGNORE the should_be_different constraint, iff
we have only one, one should be same and both inputs are identical, for instance in
sbb(x,x)
[r19702]
Michael Beck [Tue, 20 May 2008 14:22:57 +0000 (14:22 +0000)]
- If-conversion can generate SSE min and max nodes again.
- preliminary support for If-conversion without Cmov
[r19689]
Michael Beck [Mon, 19 May 2008 00:14:35 +0000 (00:14 +0000)]
- small code cleanup
[r19661]
Michael Beck [Mon, 19 May 2008 00:09:55 +0000 (00:09 +0000)]
fixed indentation
[r19660]
Michael Beck [Mon, 19 May 2008 00:07:42 +0000 (00:07 +0000)]
- BugFix: sometimes a wrong statistic flag was transmitted
[r19659]
Michael Beck [Sun, 18 May 2008 23:48:59 +0000 (23:48 +0000)]
- BugFix of the last fix ...
[r19658]
Michael Beck [Sun, 18 May 2008 23:46:56 +0000 (23:46 +0000)]
- BugFix: we really have to check both sides independently for (a ^ b) ^ a
[r19657]
Michael Beck [Sun, 18 May 2008 23:44:40 +0000 (23:44 +0000)]
add missing DBG_OPT calls
[r19656]
Christoph Mallon [Sun, 18 May 2008 20:49:17 +0000 (20:49 +0000)]
Implement (a ^ b) ^ a -> b (in all four commutative variants).
[r19655]
Michael Beck [Sun, 18 May 2008 14:39:10 +0000 (14:39 +0000)]
Allow safe x/y = x * (1.0/y) for exact 1.0/y even if floating point constant folding is disabled
[r19653]
Michael Beck [Sat, 17 May 2008 02:18:31 +0000 (02:18 +0000)]
- Removed a big performance hit: The MARKS for visiting a node were
previously removed after visiting:
This could lead to visiting the same subgraph more than once (and
quadratic runtime), but is not neccessary:
If a subgraph was once visited, all addresses were already added to
the set of "free" nodes.
This fixes the mostly endless runs of the compiler for big methods,
for instance in 176.gcc/calls.c after running cond_eval.c once more
- BugFix: add missing call to new initializer handling
- BugFix: if a node is exchanged, use the new node (not the Id) for
further checks
- simplified the code
- fixed indentation
[r19652]
Michael Beck [Sat, 17 May 2008 01:58:48 +0000 (01:58 +0000)]
- fixed indentation
- use the set_using_irn_link() api
- fixed debugging output
- use is_Call()
[r19651]
Michael Beck [Fri, 16 May 2008 09:28:27 +0000 (09:28 +0000)]
small code improvements
[r19644]
Michael Beck [Fri, 16 May 2008 09:19:05 +0000 (09:19 +0000)]
BugFix: invalidate more data
[r19643]
Matthias Braun [Thu, 15 May 2008 12:18:08 +0000 (12:18 +0000)]
Belady optimisation:
- don't take delayed nodes too aggressively: if they're already dead in the
known preds, then we'll only induce unnecessary reloads
[r19629]
Christoph Mallon [Thu, 15 May 2008 11:19:30 +0000 (11:19 +0000)]
Improve sorting of roots: place live-out nodes later.
[r19628]
Michael Beck [Thu, 15 May 2008 10:59:38 +0000 (10:59 +0000)]
Improved inline heuristic:
- inline recursive calls in rary cases only (BIG benefice or all
arguments constant)
- change some weights to hopefully better values
[r19625]
Michael Beck [Thu, 15 May 2008 10:15:52 +0000 (10:15 +0000)]
dumps now new style initializers
[r19623]
Michael Beck [Wed, 14 May 2008 12:37:44 +0000 (12:37 +0000)]
BugFix: the spillslot coalescer need the ProjM nodes ...
[r19612]
Michael Beck [Wed, 14 May 2008 11:29:51 +0000 (11:29 +0000)]
testprogram for the fisttp instruction
[r19610]
Michael Beck [Wed, 14 May 2008 10:31:19 +0000 (10:31 +0000)]
BugFix: add missing copy
[r19609]
Michael Beck [Wed, 14 May 2008 10:17:58 +0000 (10:17 +0000)]
- modeled vfisttp using a dummy output value, this should fix the non-working copy hack
[r19608]
Michael Beck [Wed, 14 May 2008 02:18:29 +0000 (02:18 +0000)]
- don't use inc/dec on core2
- add full support for SSE3 vfisttp instruction
[r19607]
Michael Beck [Tue, 13 May 2008 23:58:35 +0000 (23:58 +0000)]
BugFix:
- jb is jc, not jae
- at&t syntax uses bt bitnumber, value ...
[r19606]
Michael Beck [Tue, 13 May 2008 21:44:03 +0000 (21:44 +0000)]
SSE3 fisttp instruction added (currently unused due to RA problems)
[r19605]
Michael Beck [Tue, 13 May 2008 21:04:27 +0000 (21:04 +0000)]
-BugFix: can not handle values with - in in, needed for instance for ia32-opt=k6-2
[r19604]
Michael Beck [Tue, 13 May 2008 19:24:58 +0000 (19:24 +0000)]
BugFix:loop-info must run on copy
[r19603]
Michael Beck [Tue, 13 May 2008 19:17:20 +0000 (19:17 +0000)]
inline_leave_functions(): uses new collect_calls2() and needs loop-info
[r19602]