Hannes Rapp [Mon, 1 Feb 2010 15:45:40 +0000 (15:45 +0000)]
[r27015]
Hannes Rapp [Mon, 1 Feb 2010 15:43:53 +0000 (15:43 +0000)]
- std function-prolog emitter eingebaut
[r27014]
Matthias Braun [Fri, 29 Jan 2010 18:24:15 +0000 (18:24 +0000)]
fix float constants with PIC code
[r27012]
Matthias Braun [Fri, 29 Jan 2010 18:04:34 +0000 (18:04 +0000)]
fix allow_ifconv being called with true/false swapped
[r27011]
Christoph Mallon [Thu, 28 Jan 2010 20:55:16 +0000 (20:55 +0000)]
Reduce code duplication by jumping to the appropriate case.
[r27008]
Christoph Mallon [Thu, 28 Jan 2010 20:32:02 +0000 (20:32 +0000)]
In mode_b lowering move the assertion for mode_b below the check, whether the node was replaced already. Some nodes are their own replacement and therefore do not have mode_b anymore after lowering.
[r27007]
Christoph Mallon [Thu, 28 Jan 2010 20:28:43 +0000 (20:28 +0000)]
Consistently record the replacement nodes and removal candidates when doing mode_b lowering. This was not done in some cases, most importantly the former was not done for certain Projs, which are their own replacement (just their mode gets changed). Also add a FIXME that the algorithm is subtly broken and may replace the same node twice due to recursion over Phis.
[r27006]
Christoph Mallon [Thu, 28 Jan 2010 19:14:30 +0000 (19:14 +0000)]
Leave a bit space between cases.
[r27005]
Christoph Mallon [Thu, 28 Jan 2010 19:13:04 +0000 (19:13 +0000)]
Use the locally cached value of config.lowered_mode instead of reading it again.
[r27004]
Christoph Mallon [Thu, 28 Jan 2010 19:09:16 +0000 (19:09 +0000)]
Use the real firm_clear_link() instead of duplicating it.
[r27003]
Christoph Mallon [Thu, 28 Jan 2010 19:05:13 +0000 (19:05 +0000)]
Use a real Dummy node instead of misusing an Unknown node and shortly deactivating CSE.
[r27002]
Christoph Mallon [Thu, 28 Jan 2010 18:57:29 +0000 (18:57 +0000)]
Remove write-only local variable.
[r27001]
Christoph Mallon [Thu, 28 Jan 2010 18:56:00 +0000 (18:56 +0000)]
Make the documenation of new_*Alloc() consistent: It's the number of objects, not bytes.
[r27000]
Olaf Liebe [Thu, 28 Jan 2010 12:24:10 +0000 (12:24 +0000)]
Fixed set_irn_in array allocation obstack
[r26997]
Olaf Liebe [Thu, 28 Jan 2010 10:15:03 +0000 (10:15 +0000)]
lower_highlevel didn't invalidate outedges, code_placement must assure doms
[r26996]
Olaf Liebe [Thu, 28 Jan 2010 10:13:26 +0000 (10:13 +0000)]
emit unknown values as 0
[r26995]
Andreas Zwinkau [Wed, 27 Jan 2010 09:58:21 +0000 (09:58 +0000)]
libfirm must be linked to libm
[r26994]
Matthias Braun [Fri, 22 Jan 2010 09:03:34 +0000 (09:03 +0000)]
add a default_layout_compound_type; the backend layouts the frametype now if it hasn't happened yet
[r26991]
Michael Beck [Fri, 22 Jan 2010 00:02:57 +0000 (00:02 +0000)]
cosmetic change
[r26990]
Matthias Braun [Wed, 20 Jan 2010 08:34:24 +0000 (08:34 +0000)]
fix doz stuff
[r26988]
Matthias Braun [Tue, 19 Jan 2010 22:53:49 +0000 (22:53 +0000)]
- allow_ifconv interface was totally braindamaged. Use a simple and intuitive
interface now.
- Fix several bugs in the ia32 version of it
- Unfortunately this leads to the obscure Doz construct being always created
(instead of only when cmovs are allowed) and firm generates broken code
for that (testcase coming in 5 minutes)
[r26985]
Matthias Braun [Mon, 18 Jan 2010 15:27:35 +0000 (15:27 +0000)]
remove ins_permuted from CMovcc and Setcc constructors (again)
[r26983]
Michael Beck [Mon, 18 Jan 2010 02:28:05 +0000 (02:28 +0000)]
Add an cse_neutral opcode property. Nodes with this property are
CSE neutral to its users, i.e. op(..., x, ...) ~ op(..., y, ...) if x and y are both neutral.
Setting this property to ia32_ProduceVal nodes allow to CSE nodes that differ in ProduceVals only (which themself NEVER are cse'd).
This "fixes" divmod.
[r26981]
Michael Beck [Mon, 18 Jan 2010 01:05:41 +0000 (01:05 +0000)]
Add a rule to transform x .op. (x .op. y) into y .op. (x .op. x) for commutative nodes. This finally "fixes" codegen/lea.c and might be usefull for and,or,xor as well.
[r26980]
Michael Beck [Mon, 18 Jan 2010 00:32:49 +0000 (00:32 +0000)]
Fixed move_consts_up() failure in some contexts (This partly fixes codegen/lea.c).
[r26979]
Michael Beck [Sun, 17 Jan 2010 22:48:37 +0000 (22:48 +0000)]
Partly undo r26950: there seems be be subtile difference between get_flags_node() and determine_final_pnc() that are triggered by that change.
This should fix 175.vpr.
[r26977]
Christoph Mallon [Fri, 15 Jan 2010 12:53:46 +0000 (12:53 +0000)]
Replace the shift_table[] by a simple macro.
[r26974]
Christoph Mallon [Fri, 15 Jan 2010 12:23:35 +0000 (12:23 +0000)]
struct types still require names.
[r26973]
Christoph Mallon [Fri, 15 Jan 2010 12:20:56 +0000 (12:20 +0000)]
Correct typo in comment.
[r26972]
Christoph Mallon [Fri, 15 Jan 2010 11:57:22 +0000 (11:57 +0000)]
Implement and use tarval_andnot().
[r26970]
Christoph Mallon [Fri, 15 Jan 2010 11:21:54 +0000 (11:21 +0000)]
Remove the or_table[] and simply use |.
[r26969]
Christoph Mallon [Fri, 15 Jan 2010 11:15:07 +0000 (11:15 +0000)]
Remove the and_table[] and simply use &.
[r26968]
Christoph Mallon [Fri, 15 Jan 2010 10:18:16 +0000 (10:18 +0000)]
Remove the xor_table[] and simply use ^.
[r26967]
Christoph Mallon [Fri, 15 Jan 2010 10:11:52 +0000 (10:11 +0000)]
Remove the not_table[] and simply use ^ SC_F.
[r26966]
Michael Beck [Fri, 15 Jan 2010 01:22:07 +0000 (01:22 +0000)]
Fixed register order (arg, the comments were in ATT).
[r26965]
Michael Beck [Fri, 15 Jan 2010 01:16:48 +0000 (01:16 +0000)]
Add binary emitter for setcc.
[r26964]
Michael Beck [Thu, 14 Jan 2010 23:49:06 +0000 (23:49 +0000)]
As a reminiscence to the famous MAC/65 assembler changed modifier + into > and - into <, so >R is the hight part of a register, <R the low part!
[r26963]
Michael Beck [Thu, 14 Jan 2010 23:45:52 +0000 (23:45 +0000)]
C99 feature removed.
[r26962]
Christian Helmer [Thu, 14 Jan 2010 15:23:29 +0000 (15:23 +0000)]
Loop inversion does not fail the given test cases but is still 'dumb'.
[r26961]
Matthias Braun [Thu, 14 Jan 2010 12:41:34 +0000 (12:41 +0000)]
Michael found a nice trick to implement sets for float compares
[r26960]
Michael Beck [Thu, 14 Jan 2010 00:08:39 +0000 (00:08 +0000)]
Reverted r26952, using the blocks irg is ok ...
[r26959]
Michael Beck [Wed, 13 Jan 2010 23:16:27 +0000 (23:16 +0000)]
Add my debugging code it might be useful in the future ...
[r26958]
Matthias Braun [Wed, 13 Jan 2010 15:48:12 +0000 (15:48 +0000)]
remove cond_kind attribute, it was never used in a consistent or correct way anyway
[r26957]
Matthias Braun [Wed, 13 Jan 2010 15:41:28 +0000 (15:41 +0000)]
cleanup and fix some bugs in ir reader/writer
[r26956]
Michael Beck [Tue, 12 Jan 2010 23:02:56 +0000 (23:02 +0000)]
BugFix: the name o for the NEW NODE was a little bit misleading ...
[r26955]
Michael Beck [Tue, 12 Jan 2010 22:27:48 +0000 (22:27 +0000)]
Try to fix a rare edges bug:
- if a node was built with edges disabled gets dead, but is revived by CSE when edges are enabled, it had NO edges
- tries to keep track of such dead nodes ...
[r26954]
Michael Beck [Tue, 12 Jan 2010 21:35:35 +0000 (21:35 +0000)]
Simplify pointer arithmetic.
[r26953]
Michael Beck [Tue, 12 Jan 2010 21:31:30 +0000 (21:31 +0000)]
Creating a block on some irg is pointless if all other nodes are created on current_ir_graph.
[r26952]
Olaf Liebe [Tue, 12 Jan 2010 14:10:17 +0000 (14:10 +0000)]
Fixed graph-independent construction in mux lowering
[r26951]
Matthias Braun [Mon, 11 Jan 2010 18:11:13 +0000 (18:11 +0000)]
panic instead of wrong results for Set and CMov with float compare. Rename Set to Setcc and CMov to CMovcc
[r26950]
Michael Beck [Sat, 9 Jan 2010 03:53:25 +0000 (03:53 +0000)]
Small optimization. Note that the else case crashes libFirm and must be fixed, or disable inlining with exceptions yet.
[r26943]
Michael Beck [Sat, 9 Jan 2010 01:55:48 +0000 (01:55 +0000)]
Add win32 version of obstack_vprintf.
[r26940]
Michael Beck [Sat, 9 Jan 2010 01:30:31 +0000 (01:30 +0000)]
the find_pointer_type interface still needs a mode because we might have pointers with different modes ...
[r26938]
Michael Beck [Sat, 9 Jan 2010 01:26:19 +0000 (01:26 +0000)]
the find_pointer_type interface still needs a mode because we might have pointers with different modes ...
small C99 fix
[r26937]
Michael Beck [Sat, 9 Jan 2010 00:36:17 +0000 (00:36 +0000)]
BugFixes:
- fixed memory leak
- invalidate the analysis info only if the graph contains muxes
- fixed linking of Proj nodes
- fixed linking of mbh lists: no need to manipulate them, as new newly created block is a mbh itself
[r26936]
Michael Beck [Sat, 9 Jan 2010 00:30:16 +0000 (00:30 +0000)]
- part_block() does not change the current_block anymore
- update docu: collect_phiprojs() puts all partBlocks into a list of its mbh, part_block uses this info
- the lower block (old_block) of a splitted block is always a mbh
- part_block sets and restores current_ir_graph and did not depends on its preliminary setting
[r26935]
Matthias Braun [Fri, 8 Jan 2010 19:09:47 +0000 (19:09 +0000)]
fix last commit
[r26932]
Matthias Braun [Fri, 8 Jan 2010 18:35:53 +0000 (18:35 +0000)]
lower ConvB->LL and LL->ConvB and simplify code
[r26930]
Matthias Braun [Thu, 7 Jan 2010 20:01:36 +0000 (20:01 +0000)]
fix fehler172
[r26926]
Matthias Braun [Thu, 7 Jan 2010 18:47:22 +0000 (18:47 +0000)]
fix extended fehler171
[r26924]
Matthias Braun [Thu, 7 Jan 2010 18:40:52 +0000 (18:40 +0000)]
Fix fehler171
[r26922]
Matthias Braun [Thu, 7 Jan 2010 18:30:31 +0000 (18:30 +0000)]
Liebe part3: mux lowerer (with minimal changes)
[r26919]
Matthias Braun [Thu, 7 Jan 2010 18:30:27 +0000 (18:30 +0000)]
remove unused code
[r26918]
Matthias Braun [Thu, 7 Jan 2010 18:27:46 +0000 (18:27 +0000)]
make part_block independent of current_ir_graph
[r26917]
Matthias Braun [Thu, 7 Jan 2010 18:27:27 +0000 (18:27 +0000)]
we still need to read in pointer mode
[r26916]
Matthias Braun [Thu, 7 Jan 2010 15:57:08 +0000 (15:57 +0000)]
Liebe bugs part2: switch cases are analyzed in long variables, use LONG_MAX and LONG_MIN
[r26915]
Matthias Braun [Thu, 7 Jan 2010 15:01:47 +0000 (15:01 +0000)]
add comments and descriptions to mode_b lowering; reformat lower_mode_b.c to latest coding conventions
[r26914]
Matthias Braun [Thu, 7 Jan 2010 13:52:30 +0000 (13:52 +0000)]
Liebe bugs part1: Eor(1, Proj(Cmp)) was broken - simply remove the optimisation since Eor(1, X) gets transformed to Not anyway and Not(Cmp) gets optimized
[r26913]
Michael Beck [Thu, 7 Jan 2010 03:06:33 +0000 (03:06 +0000)]
Gracefully handle a missing retrieve_type_dbg.
[r26910]
Matthias Braun [Tue, 5 Jan 2010 15:56:54 +0000 (15:56 +0000)]
Primitive, Pointer, Array and Method types are anonymous now
- There's a new type_dbg_info* that allows you to attach debug names to types
- get_type_name and get_type_ident are now more. The new ir_print_type
and the usual ir_printf("%+F", type) help in most usage cases.
But you should be aware that names are not guaranteed to be unique anymore
(or positively said: You don't have no trouble anymore building unique names
in code that creates types)
- No need to specify mode for new pointer types anymore (you can still do it
with set_type_mode)
[r26909]
Michael Beck [Mon, 4 Jan 2010 00:50:55 +0000 (00:50 +0000)]
BugFix: fixed conversion for x < lo || x >|>= hi
[r26904]
Michael Beck [Sun, 3 Jan 2010 15:48:29 +0000 (15:48 +0000)]
BugFix:
- the upper block must dominate the block, else we cannot fuse
upper and lower block
[r26899]
Michael Beck [Sun, 3 Jan 2010 14:14:27 +0000 (14:14 +0000)]
BugFixes:
- place new constructed code into the right block, which might
be neither the block of any Cmp
- only the <null, null> test can have different operands, all others
must have one common op in both compares
- remove the meaningless <null, null> message
[r26898]
Michael Beck [Sun, 3 Jan 2010 13:11:15 +0000 (13:11 +0000)]
BugFix: a Cmp can be in a different block than its Cond
[r26897]
Michael Beck [Sun, 3 Jan 2010 11:32:49 +0000 (11:32 +0000)]
Deleted support for type_id.
[r26896]
Michael Beck [Sun, 3 Jan 2010 11:28:44 +0000 (11:28 +0000)]
I was annoyed by the compiler warnings about implicit conversions.
[r26895]
Michael Beck [Sat, 2 Jan 2010 21:03:10 +0000 (21:03 +0000)]
Fixed some obviously wrong conditions.
[r26890]
Michael Beck [Sat, 2 Jan 2010 18:05:35 +0000 (18:05 +0000)]
- handle p == 0 || q == 0
[r26885]
Michael Beck [Sat, 2 Jan 2010 17:13:16 +0000 (17:13 +0000)]
fixed doxygen comment
[r26883]
Michael Beck [Sat, 2 Jan 2010 17:12:27 +0000 (17:12 +0000)]
Allow the modulo-shift setting for reference modes. This is a work-around that fixes find_unsigned_mode().
[r26882]
Matthias Braun [Sat, 2 Jan 2010 15:12:28 +0000 (15:12 +0000)]
I was annoyed by the compiler warnings about declaration isn't a prototype
[r26880]
Matthias Braun [Sat, 2 Jan 2010 13:57:38 +0000 (13:57 +0000)]
cleanup dbginfo public API: no dbg_snprint anymore
(there is retrieve_dbginfo stuff already there! And don't tell me about possible
future extensions where sets of locations are merged and someone generates
usefull debug info from that. Noone uses this currently!)
[r26878]
Michael Beck [Sat, 2 Jan 2010 13:51:44 +0000 (13:51 +0000)]
- handle p == NULL || q == NULL and friends
- fixed a lot of comments
[r26877]
Matthias Braun [Sat, 2 Jan 2010 13:34:36 +0000 (13:34 +0000)]
be consistent and only add extern C in the firm.h header and in no other header
[r26876]
Matthias Braun [Sat, 2 Jan 2010 11:58:15 +0000 (11:58 +0000)]
fix my last commit (shouldn't commit so fast...)
[r26875]
Matthias Braun [Sat, 2 Jan 2010 11:51:17 +0000 (11:51 +0000)]
really remove type_id
[r26874]
Matthias Braun [Sat, 2 Jan 2010 11:32:35 +0000 (11:32 +0000)]
remove the unused 'ident' type, remove tpo_max add tpo_last
[r26873]
Michael Beck [Sat, 2 Jan 2010 02:49:51 +0000 (02:49 +0000)]
- implement a <= x <= b ==> x-a <=u b-a
- fixed path compression
- use debug output instead of fprintf
[r26872]
Michael Beck [Sat, 2 Jan 2010 01:49:09 +0000 (01:49 +0000)]
Fixed and enhanced boolopt:
- added missing Phi-check
- added missing path compression
- do not add bad nodes, as these no not reduce the number of block inputs
- add doxygen comments
[r26871]
Michael Beck [Thu, 31 Dec 2009 14:05:15 +0000 (14:05 +0000)]
get_arm_shift_modifier() has no implementation, removed declaration.
[r26869]
Michael Beck [Wed, 30 Dec 2009 01:10:29 +0000 (01:10 +0000)]
- use irg instead of current_ir_graph
[r26868]
Michael Beck [Wed, 30 Dec 2009 01:00:26 +0000 (01:00 +0000)]
- inside irg_verify() call irn_verify_irg(), not irn_verify() (which is disabled if DEBUG_libfirm is not set)
- small BugFix: output the right graph in error message
[r26867]
Michael Beck [Wed, 30 Dec 2009 00:46:29 +0000 (00:46 +0000)]
implement ir_graph_pass_set_parallel()
[r26866]
Michael Beck [Wed, 30 Dec 2009 00:22:58 +0000 (00:22 +0000)]
- changed to able to "run the path parallel"
- adapt to firm coding conventions even more
[r26865]
Michael Beck [Wed, 30 Dec 2009 00:04:50 +0000 (00:04 +0000)]
- kicked useless blocks
[r26864]
Michael Beck [Tue, 29 Dec 2009 23:48:22 +0000 (23:48 +0000)]
fix for compound_path deprecation
[r26862]
Matthias Braun [Tue, 29 Dec 2009 16:56:12 +0000 (16:56 +0000)]
move compound_graph path stuff into own files and add deprecation comments
[r26860]
Matthias Braun [Tue, 29 Dec 2009 16:49:44 +0000 (16:49 +0000)]
fix another compound_graph_path usage
[r26857]
Matthias Braun [Tue, 29 Dec 2009 16:40:38 +0000 (16:40 +0000)]
fix another illegal usage of compound_graph_path stuff
[r26856]
Matthias Braun [Tue, 29 Dec 2009 16:18:12 +0000 (16:18 +0000)]
fix illegal usage of compound_graph_path
[r26854]