Matthias Braun [Thu, 21 Jun 2012 13:01:59 +0000 (15:01 +0200)]
bespillslots: cleanup, make it deterministic
Matthias Braun [Thu, 21 Jun 2012 10:00:05 +0000 (12:00 +0200)]
make compiler more deterministic by sorting Perm inputs
Matthias Braun [Thu, 21 Jun 2012 09:48:21 +0000 (11:48 +0200)]
normalize Sync node by sorting their inputs
This also makes the compiler alot more deterministic avoiding, lots of
"random" jumping around in series of stores and loads.
Matthias Braun [Thu, 21 Jun 2012 09:47:17 +0000 (11:47 +0200)]
avoid "Unknown" hacks with reroute_edges_except
Matthias Braun [Thu, 21 Jun 2012 09:46:29 +0000 (11:46 +0200)]
iredges: introduce new reroute_edges_except
I expect this to be a common pattern
Christoph Mallon [Tue, 19 Jun 2012 07:31:15 +0000 (09:31 +0200)]
Remove the unused flag irop_flag_always_opt.
Christoph Mallon [Tue, 19 Jun 2012 07:20:26 +0000 (09:20 +0200)]
Remove the never read flag irop_flag_dump_noinput.
Christoph Mallon [Tue, 19 Jun 2012 07:11:45 +0000 (09:11 +0200)]
Remove the never read flag irop_flag_labeled.
Christoph Mallon [Mon, 18 Jun 2012 12:16:27 +0000 (14:16 +0200)]
Mark memory using nodes with "uses_memory".
Christoph Mallon [Mon, 18 Jun 2012 12:15:52 +0000 (14:15 +0200)]
It's spelled "ins", not "in".
Christoph Mallon [Mon, 18 Jun 2012 12:09:26 +0000 (14:09 +0200)]
For readability put empty lines between node specifications.
Christoph Mallon [Tue, 19 Jun 2012 07:29:18 +0000 (09:29 +0200)]
Simplify assertion.
Christoph Mallon [Mon, 18 Jun 2012 13:56:25 +0000 (15:56 +0200)]
Remove stale $Id$.
Christoph Mallon [Mon, 18 Jun 2012 14:34:52 +0000 (16:34 +0200)]
Allow spills in amd64_set_frame_entity(), too.
Christoph Mallon [Mon, 18 Jun 2012 14:17:27 +0000 (16:17 +0200)]
Always (instead of never) emit labels for basic blocks on AMD64.
Christoph Mallon [Fri, 15 Jun 2012 20:30:14 +0000 (22:30 +0200)]
Make test for superfluous And/Or removal in fp-vrp more general.
Matthias Braun [Fri, 15 Jun 2012 12:58:49 +0000 (14:58 +0200)]
Projs are always in the same block as their preds
Matthias Braun [Fri, 15 Jun 2012 12:55:46 +0000 (14:55 +0200)]
remove opt_manage, provide assure_irg_properties
The opt_manage framework didn't really do much except assuring that some
analysis info is computed before a pass starts. We can achieve this
simpler by providing an assure_irg_properties function.
This commit also fixes some places where analysis info was potentially
not invalidated before.
Matthias Braun [Fri, 15 Jun 2012 10:56:47 +0000 (12:56 +0200)]
remove return values from graph transformations
Noone was really using the return values anyway. This change makes the
API more consistent.
Matthias Braun [Fri, 15 Jun 2012 09:26:24 +0000 (11:26 +0200)]
gen_docu: output 'None' for an empty flags list
Matthias Braun [Fri, 15 Jun 2012 09:08:18 +0000 (11:08 +0200)]
fix warning
Matthias Braun [Fri, 15 Jun 2012 08:55:00 +0000 (10:55 +0200)]
cfopt: code cleanup
Matthias Braun [Fri, 15 Jun 2012 00:02:39 +0000 (02:02 +0200)]
rename edges_assure to assure_edges
This makes it consistent with other firm analyse functions. Also removes
the unnecessary return value.
Matthias Braun [Thu, 14 Jun 2012 17:06:04 +0000 (19:06 +0200)]
split graph state into properties and constraints
graph_properties are things that a transformation may destroy but which
can be easily recalculated.
graph_constraints are set after lowering phases have been running and
forbid certain constructs that no (later) transformation is allowed to construct
Matthias Braun [Fri, 15 Jun 2012 09:19:43 +0000 (11:19 +0200)]
improve Shl,Shr,Shrs documentation
Christoph Mallon [Thu, 14 Jun 2012 13:25:08 +0000 (15:25 +0200)]
Remove compound path initializers.
Christoph Mallon [Thu, 14 Jun 2012 06:36:07 +0000 (08:36 +0200)]
Implement eval_strcmp() for the new style initializers.
Sebastian Buchwald [Thu, 14 Jun 2012 09:53:09 +0000 (11:53 +0200)]
Fixed compile error in optimize build.
Christoph Mallon [Wed, 13 Jun 2012 14:45:16 +0000 (16:45 +0200)]
Remove the local buffer from dbg_printf().
Christoph Mallon [Tue, 22 May 2012 08:11:52 +0000 (10:11 +0200)]
Correct comment.
Matthias Braun [Wed, 13 Jun 2012 14:53:12 +0000 (16:53 +0200)]
fix warning
Matthias Braun [Wed, 13 Jun 2012 14:39:00 +0000 (16:39 +0200)]
remove deprecated support for bitfield masking
Matthias Braun [Wed, 13 Jun 2012 13:31:27 +0000 (15:31 +0200)]
remove extended basic block support
First it is unclear what is a good way to deconstruct a program into extended
basic blocks, also none of our optimizations works on extended basic
blocks.
Matthias Braun [Wed, 13 Jun 2012 13:27:17 +0000 (15:27 +0200)]
do not use current_ir_graph in irdump.c
Matthias Braun [Wed, 13 Jun 2012 09:02:30 +0000 (11:02 +0200)]
debugger: add randnode debug command
This call initializes the node_nr with a random value on startup. This
lets you test wether the compile behaves deterministically regardless of
node numbers (which isn't always the case right now).
Matthias Braun [Wed, 13 Jun 2012 09:01:50 +0000 (11:01 +0200)]
fix debugger tokenlist
Matthias Braun [Wed, 13 Jun 2012 09:01:28 +0000 (11:01 +0200)]
remove unnecessary revision thing
Matthias Braun [Wed, 13 Jun 2012 08:59:25 +0000 (10:59 +0200)]
increase dbg_printf buffer in debug/debugger.c
Matthias Braun [Wed, 6 Jun 2012 13:54:58 +0000 (15:54 +0200)]
normalize block numbers in assembler output
This makes the produced assembler independent from fragile node numbers.
It's also a little bit easier to read.
Matthias Braun [Wed, 6 Jun 2012 11:40:38 +0000 (13:40 +0200)]
attempt to make root_cmp of beschednormal more deterministic
Matthias Braun [Wed, 6 Jun 2012 09:12:46 +0000 (11:12 +0200)]
be: introduce verboseasm flag (enabled by default)
Also factor out code that emits the label and comment at the beginning
of a basic block.
Matthias Braun [Wed, 6 Jun 2012 09:12:30 +0000 (11:12 +0200)]
be: expose be_options variable globally
Sebastian Buchwald [Wed, 16 May 2012 12:51:48 +0000 (14:51 +0200)]
Beautified GVN-PRE code.
Matthias Braun [Wed, 16 May 2012 11:53:49 +0000 (13:53 +0200)]
create Bad instead of Phi0 for unreachable blocks
Christoph Mallon [Mon, 14 May 2012 16:58:20 +0000 (18:58 +0200)]
Remove a stale comment.
It probably was true when the start block had itself as predecessor.
Christoph Mallon [Mon, 14 May 2012 16:57:10 +0000 (18:57 +0200)]
Remove redundant operations from set_phi_arguments(): phi is always a Phi.
Christoph Mallon [Sun, 13 May 2012 10:45:38 +0000 (12:45 +0200)]
Remove the unused function be_emit_ident().
Christoph Mallon [Sun, 13 May 2012 10:41:30 +0000 (12:41 +0200)]
Use be_emit_irprintf("%I", x) instead of be_emit_ident(x).
Christoph Mallon [Sun, 13 May 2012 10:36:20 +0000 (12:36 +0200)]
Remove be_emit_tarval().
Christoph Mallon [Sun, 13 May 2012 20:51:54 +0000 (22:51 +0200)]
Use be_emit_irprintf("%T", x) instead of be_emit_tarval().
Christoph Mallon [Sun, 13 May 2012 10:29:10 +0000 (12:29 +0200)]
Remove the write-only attributes cg_backedge and in_cg from struct block_attr.
Christoph Mallon [Sun, 13 May 2012 10:27:53 +0000 (12:27 +0200)]
Remove the unused macro constant SNPRINTF_BUF_LEN.
Christoph Mallon [Sun, 13 May 2012 07:06:19 +0000 (09:06 +0200)]
Remove redundant null-pointer test before free().
Christoph Mallon [Sun, 13 May 2012 11:05:58 +0000 (13:05 +0200)]
Resolve constness warning.
Julian Oppermann [Fri, 11 May 2012 09:22:46 +0000 (11:22 +0200)]
Fix Conv node signature in error message.
Matthias Braun [Thu, 10 May 2012 21:38:08 +0000 (23:38 +0200)]
copy comp_dir_value
Matthias Braun [Thu, 10 May 2012 20:44:04 +0000 (22:44 +0200)]
sparc: fix problem with compound return
Matthias Braun [Thu, 10 May 2012 19:36:44 +0000 (21:36 +0200)]
forbid to set current_block to Bad
This was used as a hack to mark unreachable code by some people, but it
is prefered to simply use a new Block without predecessors, or set NULL
if you have to.
Matthias Braun [Thu, 10 May 2012 17:07:42 +0000 (19:07 +0200)]
remove buffer restriction in be_emit_irprintf
Matthias Braun [Fri, 4 May 2012 13:48:37 +0000 (15:48 +0200)]
improve docu of ir_visibility_external
Christoph Mallon [Sun, 6 May 2012 18:17:06 +0000 (20:17 +0200)]
Teach new_tarval_from_str_int() to parse binary numbers: 0[bB][01]+.
Christoph Mallon [Sun, 6 May 2012 18:04:33 +0000 (20:04 +0200)]
Correct the documentation of new_tarval_from_str().
Christoph Mallon [Sat, 5 May 2012 16:05:46 +0000 (18:05 +0200)]
Resolve shadowing warning.
Christoph Mallon [Sat, 5 May 2012 16:03:45 +0000 (18:03 +0200)]
Remove unnecessary void cast.
Christoph Mallon [Sat, 5 May 2012 16:03:10 +0000 (18:03 +0200)]
Correct indentation and excessive spacing.
Christoph Mallon [Sat, 5 May 2012 15:59:10 +0000 (17:59 +0200)]
Correct typo in comment.
Christoph Mallon [Sat, 5 May 2012 15:58:05 +0000 (17:58 +0200)]
Do not refetch a value, which we already have.
Christoph Mallon [Sun, 6 May 2012 06:02:10 +0000 (08:02 +0200)]
Unbreak emitting TLS variables in the binary ia32 emitter.
Christoph Mallon [Sat, 5 May 2012 21:02:22 +0000 (23:02 +0200)]
Change tests for ir_visibility_external, which should really test for entity_has_definition(), since the meaning of ir_visibility_external changed.
For global variables defined in the current translation unit this restores that
- they are not accessed via trampolines when compiling PIC,
- they are not skipped when emitting debug info.
Christoph Mallon [Sat, 5 May 2012 15:37:37 +0000 (17:37 +0200)]
Unbreak PIC: Only stop emitting a global without initializer after emitting its trampoline.
Matthias Braun [Fri, 4 May 2012 12:31:15 +0000 (14:31 +0200)]
improve entity verifier
Matthias Braun [Fri, 4 May 2012 12:30:03 +0000 (14:30 +0200)]
Introduce IR_LINKAGE_NO_CODEGEN
This is used to implement C99 "inline"/GNU89 "extern inline" ie. an
entity which is externally defined but where we know an inlineable
definition anyway.
Matthias Braun [Thu, 3 May 2012 18:43:05 +0000 (20:43 +0200)]
ir_visibility cleanup
This commit removes the strange differentiation between
ir_visibility_external and ir_visibility_default. We now only have
ir_visibility_external for all symbols visible across compilation units.
You may or may not attach graphs/initializers to them.
Matthias Braun [Thu, 3 May 2012 18:37:15 +0000 (20:37 +0200)]
fix entity_has_definition
Christoph Mallon [Thu, 3 May 2012 20:21:04 +0000 (22:21 +0200)]
Emit a \t before .globl.
Matthias Braun [Fri, 27 Apr 2012 15:31:21 +0000 (17:31 +0200)]
fix problem with shared doubleword types
Matthias Braun [Thu, 26 Apr 2012 17:58:08 +0000 (19:58 +0200)]
trverify: cleanup, check irg.entity == entity.irg
Matthias Braun [Thu, 26 Apr 2012 16:32:27 +0000 (18:32 +0200)]
don't fail when printing Sel with entity==NULL
(This happens when you break on a Sel creation and the firm debugger
tries to tell you about the created node)
Matthias Braun [Wed, 25 Apr 2012 21:01:59 +0000 (23:01 +0200)]
dwarf: initial support for callframe and params
- We now always output dwarf3 so we can use DW_OP_call_frame_cfa and avoid
construction location lists, but just reuse the callframe info lists.
- Backends have to emit debug info as callframe calculation changes:
The ia32 backend has a preliminary implementation which assumes esp
offset of frame_type_size at the beginning of a block (currently
always true), the no-omit-fp mode assumes ebp relative addressing
(which is correct except for the prolog/epilogue insns)
Matthias Braun [Wed, 25 Apr 2012 20:52:07 +0000 (22:52 +0200)]
bedbgout, stabs: remove obsolete debug modules
Remove the stabs debugoutput code and with it all the complexity of a
modular debug output system. The only remaining debug output module is
dwarf.
Matthias Braun [Mon, 28 Nov 2011 11:45:05 +0000 (12:45 +0100)]
rename dbg_set_dbg_info to dbg_location
Matthias Braun [Thu, 24 Nov 2011 23:22:34 +0000 (00:22 +0100)]
add dwarf register number to register description
Matthias Braun [Wed, 25 Apr 2012 13:55:41 +0000 (15:55 +0200)]
move custom_abbrevs enum back into bedwarf.c
It's an internal thing and nothing from the dwarf spec
Matthias Braun [Wed, 25 Apr 2012 13:29:23 +0000 (15:29 +0200)]
fix documentation warnings
Matthias Braun [Wed, 25 Apr 2012 10:33:52 +0000 (12:33 +0200)]
debugger: cleanup, add dumpfilter, unify create
- the "create" command now catches new nodes, entities and types as
their numbers are unique anyway
Matthias Braun [Wed, 25 Apr 2012 09:07:05 +0000 (11:07 +0200)]
fix typo in comments
Christoph Mallon [Tue, 24 Apr 2012 20:36:46 +0000 (22:36 +0200)]
DWARF: Actually emit the list of files, not just the first filename over and over again, i.e. use index i, not 0.
Christoph Mallon [Tue, 24 Apr 2012 20:21:53 +0000 (22:21 +0200)]
DWARF: Actually set the selected language, not always DW_LANG_C_plus_plus.
Christoph Mallon [Tue, 24 Apr 2012 20:16:15 +0000 (22:16 +0200)]
DWARF: Move the DWARF constants into a separate header.
Christoph Mallon [Tue, 24 Apr 2012 19:17:23 +0000 (21:17 +0200)]
DWARF: Also emit the column in the debug information.
Christoph Mallon [Tue, 24 Apr 2012 19:13:45 +0000 (21:13 +0200)]
DWARF: Factorise debug information format registration.
Christoph Mallon [Tue, 24 Apr 2012 18:42:40 +0000 (20:42 +0200)]
Add the column to the debug information.
Matthias Braun [Tue, 24 Apr 2012 16:53:59 +0000 (18:53 +0200)]
dwarf: setter for language and compilation dir
Matthias Braun [Tue, 24 Apr 2012 16:53:41 +0000 (18:53 +0200)]
dwarf: preliminary support for class-types
Matthias Braun [Tue, 24 Apr 2012 16:53:11 +0000 (18:53 +0200)]
dwarf: use ld_names instead of names
Christoph Mallon [Sat, 21 Apr 2012 18:06:22 +0000 (20:06 +0200)]
Make new_type() static.
Sebastian Buchwald [Tue, 17 Apr 2012 16:42:44 +0000 (18:42 +0200)]
Fixed wrong function type.
Matthias Braun [Tue, 17 Apr 2012 16:26:48 +0000 (18:26 +0200)]
ia32: remove pointless downconv skips in gen_Add
this fixes a bug, because match_arguments determines the operations
mode by looking at the passed operands, so they must still have the
original mode and not the mode after a skip_downconv.
Ingmar Wirths [Tue, 17 Apr 2012 12:52:51 +0000 (14:52 +0200)]
Control flow optimization: Merge consecutive blocks.
Merge a block with its only control flow predecessor,
if it contains no phi nodes and the block is the only successor of the predecessor.
Christoph Mallon [Sun, 25 Mar 2012 20:11:19 +0000 (22:11 +0200)]
Turn if (x) assert(y); into assert(!x || y);