Christoph Mallon [Sat, 24 Nov 2012 14:55:54 +0000 (15:55 +0100)]
bechordal: Remove invalid cases from assertion.
The register classes must not be null here.
All allocatable register requirements must have a class.
Christoph Mallon [Sat, 24 Nov 2012 14:55:12 +0000 (15:55 +0100)]
beinsn: Remove a pointless if.
The register class cannot be null here, because only operands for the current class are collected before.
Christoph Mallon [Sat, 24 Nov 2012 14:26:01 +0000 (15:26 +0100)]
belive: Change be_liveness_nodes_live_at() to be_liveness_nodes_live_before().
The operation we want to perform is to get the live values just before a node.
Christoph Mallon [Sat, 24 Nov 2012 14:16:30 +0000 (15:16 +0100)]
be: Change insert_Perm_after() to insert_Perm_before().
The operation we want to perform is to insert a Perm before a node.
Christoph Mallon [Sat, 24 Nov 2012 13:15:39 +0000 (14:15 +0100)]
beinsn: Remove the attribute next_insn from struct be_insn_t.
Just use sched_next().
Christoph Mallon [Sat, 24 Nov 2012 13:04:30 +0000 (14:04 +0100)]
beinsn: Remove the attributes in_constraints and out_constraints from struct be_insn_t.
They are only used locally.
Write their combined value directly to has_constraints.
Christoph Mallon [Sat, 24 Nov 2012 13:00:57 +0000 (14:00 +0100)]
be: Remove the indirection via chordal_scan_insn() to be_scan_insn().
Christoph Mallon [Sat, 24 Nov 2012 12:38:08 +0000 (13:38 +0100)]
bechordal: Remove the unused attribute ilp_server[] from struct be_ra_chordal_opts_t.
Christoph Mallon [Sat, 24 Nov 2012 12:36:50 +0000 (13:36 +0100)]
bechordal: Remove the unused attribute ilp_solver[] from struct be_ra_chordal_opts_t.
Christoph Mallon [Sat, 24 Nov 2012 12:34:49 +0000 (13:34 +0100)]
bechordal: Make be_ra_chordal_color() static.
Christoph Mallon [Sat, 24 Nov 2012 12:32:09 +0000 (13:32 +0100)]
bechordal: Use foreach_border_head() instead of the raw list_for_each_entry()/list_for_each_entry_reverse().
The uses of list_for_each_entry() can use reverse, too.
They are only debug output.
Christoph Mallon [Sat, 24 Nov 2012 12:25:30 +0000 (13:25 +0100)]
bechordal: Remove the pointless wrapper macro get_block_border_head().
Christoph Mallon [Sat, 24 Nov 2012 12:24:20 +0000 (13:24 +0100)]
bechordal: Remove the unused macros border_next() and border_prev().
Christoph Mallon [Sat, 24 Nov 2012 12:23:20 +0000 (13:23 +0100)]
bechordal: Merge the macro chordal_has_class() and the function has_reg_class().
Christoph Mallon [Sat, 24 Nov 2012 11:51:27 +0000 (12:51 +0100)]
beabi: Remove unnecessary #include from beabi.h.
Christoph Mallon [Sat, 24 Nov 2012 11:45:04 +0000 (12:45 +0100)]
beabi: Remove the declaration of the non-existent function be_abi_call_get_method_type().
Christoph Mallon [Sat, 24 Nov 2012 11:39:21 +0000 (12:39 +0100)]
beabi: Remove pointless local variable.
Christoph Mallon [Sat, 24 Nov 2012 11:35:58 +0000 (12:35 +0100)]
beabi: Remove parameters from create_be_return(), which can be deduced from the parameter irn.
Christoph Mallon [Sat, 24 Nov 2012 11:31:39 +0000 (12:31 +0100)]
beabi: The parameter irn of create_be_return() never is null.
Christoph Mallon [Sat, 24 Nov 2012 11:12:54 +0000 (12:12 +0100)]
beabi: Remove the attribute cls_addr from struct be_abi_call_t.
It is only used locally.
Christoph Mallon [Sat, 24 Nov 2012 11:01:00 +0000 (12:01 +0100)]
beabi: Remove the unused function be_abi_call_set_call_address_reg_class().
Christoph Mallon [Sat, 24 Nov 2012 10:58:49 +0000 (11:58 +0100)]
beabi: Remove the unused attribute between_type from struct be_abi_call_t.
Christoph Mallon [Sat, 24 Nov 2012 10:55:13 +0000 (11:55 +0100)]
beabi: Remove the global variable be_omit_fp.
Simply directly use the be_options.
Christoph Mallon [Sat, 24 Nov 2012 10:53:02 +0000 (11:53 +0100)]
beabi: Remove redundant adjustment of try_omit_fp in process_ops_in_block().
It was initialised properly by be_abi_call_new().
Christoph Mallon [Sat, 24 Nov 2012 10:49:18 +0000 (11:49 +0100)]
beabi: Always be_abi_call_get_flags() before be_abi_call_set_flags().
The template and amd64 backends left the omit_fp flag undefined due to allocating an uninitialized be_abi_call_flags_t on the stack.
Christoph Mallon [Sat, 24 Nov 2012 10:45:49 +0000 (11:45 +0100)]
beabi: Turn be_abi_call_flags_t into a struct.
Remove the union aspect to interpret the flags as one unsigned int.
Christoph Mallon [Sat, 24 Nov 2012 10:20:27 +0000 (11:20 +0100)]
beabi: Remove the atttribute on_stack from struct be_abi_call_arg_t.
It is the complement of the atttribute in_reg.
Christoph Mallon [Sat, 24 Nov 2012 09:51:50 +0000 (10:51 +0100)]
beabi: Use the stack alignment, instead of hardcoding 4, to align the frame size.
Christoph Mallon [Sat, 24 Nov 2012 09:51:10 +0000 (10:51 +0100)]
beabi: Remove the attribute frame_tp from struct lower_frame_sels_env_t.
It is only used locally.
Christoph Mallon [Sat, 24 Nov 2012 09:44:20 +0000 (10:44 +0100)]
beabi: Remove the unused attribute static_link_pos from struct lower_frame_sels_env_t.
Christoph Mallon [Sat, 24 Nov 2012 09:43:38 +0000 (10:43 +0100)]
bearch: Remove the write-only attribute link_class from struct arch_env_t.
Christoph Mallon [Sat, 24 Nov 2012 09:42:28 +0000 (10:42 +0100)]
beabi: Remove the write-only attribute link_class from struct lower_frame_sels_env_t.
Christoph Mallon [Sat, 24 Nov 2012 09:08:34 +0000 (10:08 +0100)]
amd64: Remove struct amd64_irg_data_t.
Most attributes were unused.
The only one used (dump) is now directly read from the be_options.
Christoph Mallon [Sat, 24 Nov 2012 09:06:09 +0000 (10:06 +0100)]
bemain: init_graph in arch_isa_if_t may now be a null pointer.
Remove empty init_graph functions from arm and sparc backends.
Christoph Mallon [Sat, 24 Nov 2012 09:05:16 +0000 (10:05 +0100)]
bestack: Remove pointless local variable.
Christoph Mallon [Sat, 24 Nov 2012 09:04:41 +0000 (10:04 +0100)]
bestack: Remove the write-only attribute between_size from struct bias_walk.
Christoph Mallon [Sat, 24 Nov 2012 09:01:17 +0000 (10:01 +0100)]
beabi: Pass be_abi_irg_t around locally instead of storing it in be_irg_t.
Christoph Mallon [Sat, 24 Nov 2012 09:03:16 +0000 (10:03 +0100)]
beabi: Do not pass an environment to fix_pic_symconsts(), which it does not use.
Christoph Mallon [Sat, 24 Nov 2012 08:33:52 +0000 (09:33 +0100)]
beabi: Remove the attribute start from struct be_abi_irg_t.
It is only used in one function.
Christoph Mallon [Sat, 24 Nov 2012 08:32:10 +0000 (09:32 +0100)]
beabi: Remove the unused attribute start_block_bias from struct be_abi_irg_t.
Christoph Mallon [Sat, 24 Nov 2012 07:59:00 +0000 (08:59 +0100)]
be: Remove the irg from the birg.
There was only one user of this information left, which is changed to directly use irgs.
Christoph Mallon [Sat, 24 Nov 2012 07:53:03 +0000 (08:53 +0100)]
arm: Remove the unused function create_const().
Christoph Mallon [Sat, 24 Nov 2012 07:52:33 +0000 (08:52 +0100)]
amd64: Remove the unused function create_const().
Christoph Mallon [Fri, 23 Nov 2012 21:21:22 +0000 (22:21 +0100)]
edges: Remove support for private edge data.
Christoph Mallon [Fri, 23 Nov 2012 21:15:47 +0000 (22:15 +0100)]
edges: Remove unused macros.
Christoph Mallon [Sat, 24 Nov 2012 09:58:56 +0000 (10:58 +0100)]
tr: Remove if from set_type_size(), which would lead to a silent failure in release mode.
Now we get a nice crash.
Sebastian Buchwald [Fri, 23 Nov 2012 13:02:33 +0000 (14:02 +0100)]
Combo: Ensure split by partition for Phi nodes.
This fixes opt/combo3.c and opt/combo4.c.
Sebastian Buchwald [Thu, 22 Nov 2012 09:37:28 +0000 (10:37 +0100)]
Improved readability of debug output.
Sebastian Buchwald [Thu, 22 Nov 2012 09:22:53 +0000 (10:22 +0100)]
Dump partitions before adding them to the worklist.
This makes the debug output more readable.
Sebastian Buchwald [Tue, 20 Nov 2012 07:37:10 +0000 (08:37 +0100)]
Fixed some typos.
Christoph Mallon [Fri, 23 Nov 2012 06:41:08 +0000 (07:41 +0100)]
timer: Enlarge the display space for the time.
Christoph Mallon [Thu, 22 Nov 2012 16:48:54 +0000 (17:48 +0100)]
verifier: Check the result mode of Div and Mod.
Christoph Mallon [Thu, 22 Nov 2012 16:47:59 +0000 (17:47 +0100)]
verifier: Check that Div has a num mode, not a data mode.
Matthias Braun [Fri, 16 Nov 2012 18:33:27 +0000 (19:33 +0100)]
update for release
Matthias Braun [Wed, 21 Nov 2012 16:48:36 +0000 (17:48 +0100)]
fix assert: there are initializers with size==0
Matthias Braun [Mon, 19 Nov 2012 16:10:42 +0000 (17:10 +0100)]
ldstopt: fix for case of non-const global initializer
Matthias Braun [Fri, 16 Nov 2012 17:38:12 +0000 (18:38 +0100)]
ia32: fix stupid bug introduced in last commit
makereport didn't catch it because it uses -march=native flags by
default which produces code without fucompp.
Matthias Braun [Thu, 15 Nov 2012 15:03:03 +0000 (16:03 +0100)]
ia32_x87: remove the distinction between vfp and fp concepts
It's really the same stuff just before and after running ia32_x87
simulator, there is no real need to have 2 different things.
Christoph Mallon [Thu, 15 Nov 2012 13:53:15 +0000 (14:53 +0100)]
x87: Add a heuristic for fxch-ing one operand in sim_binop(), if both operands die.
Matthias Braun [Thu, 15 Nov 2012 09:29:13 +0000 (10:29 +0100)]
bedwarf: use be_gas_emit_string to fix escaping issues
Matthias Braun [Thu, 15 Nov 2012 09:28:04 +0000 (10:28 +0100)]
begnuas: simplify, add be_gas_emit_string()
simplify it by always using .asciz instead of sometimes .string/.ascii.
All new gcc/binutils understand .asciz.
Matthias Braun [Thu, 15 Nov 2012 08:29:39 +0000 (09:29 +0100)]
bedwarf: query backend for pointer size
Also improve doku of machine_size element in backend_params struct.
Christoph Mallon [Wed, 14 Nov 2012 11:59:50 +0000 (12:59 +0100)]
x87: Only use fucompp if one operand happens to be at st(1).
Otherwise the extra effort to get the operands to the right position is not worth it.
Further, this avoids the unnecessary effort when we not going to use fucompp in favor of fucomi anyway.
Christoph Mallon [Wed, 14 Nov 2012 12:20:22 +0000 (13:20 +0100)]
x87: Enable x87_create_fpop() to remove entries other than just the tos.
Christoph Mallon [Wed, 14 Nov 2012 12:15:06 +0000 (13:15 +0100)]
x87: Remove the parameter num from x87_create_fpop().
Christoph Mallon [Wed, 14 Nov 2012 09:49:41 +0000 (10:49 +0100)]
x87: Improve sim_binop(): Only use fxch if both operands are not at tos.
Christoph Mallon [Wed, 14 Nov 2012 09:45:21 +0000 (10:45 +0100)]
x87: Simplify the case when both operands are dead in sim_binop().
Christoph Mallon [Wed, 14 Nov 2012 09:33:20 +0000 (10:33 +0100)]
x87: Fix harmless typo in sim_binop().
The last parameter of x87_create_fpush() is used for debugging only.
Christoph Mallon [Tue, 13 Nov 2012 09:01:42 +0000 (10:01 +0100)]
x87: Simplify x87 code generation.
Do not store up to three registers for an instruction.
Instead only store the explicit register operand and whether the operands are permuted and/or the result is to be placed in the explicit register operand or st0.
Christoph Mallon [Wed, 14 Nov 2012 11:30:22 +0000 (12:30 +0100)]
x87: Simplify sim_Fucom().
Whether the operands are permuted can be deduced by testing op1_idx != 0.
Christoph Mallon [Wed, 14 Nov 2012 12:05:13 +0000 (13:05 +0100)]
x87: Simplify selecting the instruction and popping the operands in sim_Fucom().
Christoph Mallon [Tue, 13 Nov 2012 09:28:36 +0000 (10:28 +0100)]
x87: Do not set x87 attributes, which are not used.
Christoph Mallon [Tue, 13 Nov 2012 09:12:55 +0000 (10:12 +0100)]
Let be_foreach_definition() declare the value variable.
Christoph Mallon [Tue, 13 Nov 2012 08:46:59 +0000 (09:46 +0100)]
Remove the very thin wrapper function arch_register_get_class().
Christoph Mallon [Tue, 13 Nov 2012 08:39:30 +0000 (09:39 +0100)]
Remove the very thin wrapper function arch_register_get_index().
Christoph Mallon [Tue, 13 Nov 2012 08:27:30 +0000 (09:27 +0100)]
Remove the very thin wrapper function arch_register_get_name().
Matthias Braun [Mon, 12 Nov 2012 16:16:54 +0000 (17:16 +0100)]
jumpthreading: when copying kept nodes keep the copies
Matthias Braun [Mon, 12 Nov 2012 16:17:28 +0000 (17:17 +0100)]
make jumpthreading debug message less confusing
Matthias Braun [Mon, 12 Nov 2012 13:44:43 +0000 (14:44 +0100)]
only create jmp/bad when replacing exception throwing loads
Matthias Braun [Mon, 12 Nov 2012 13:14:10 +0000 (14:14 +0100)]
Makefile: cleanup, add -fomit-frame-pointer to optimize
Matthias Braun [Sat, 10 Nov 2012 17:03:10 +0000 (18:03 +0100)]
add coverage build variant to Makefile
Christoph Mallon [Sun, 11 Nov 2012 10:44:24 +0000 (11:44 +0100)]
Merge the (single) pop and non-pop variants of x87 compare operations.
Let a flag and the emitter handle printing the pop variant.
Christoph Mallon [Sun, 11 Nov 2012 10:14:39 +0000 (11:14 +0100)]
Merge the pop and non-pop variants of x87 store operations.
Let a flag and the emitter handle printing the pop variant.
Christoph Mallon [Sun, 11 Nov 2012 09:47:21 +0000 (10:47 +0100)]
Merge the pop and non-pop variants of x87 binary operations.
Let a flag and the emitter handle printing the pop variant.
Christoph Mallon [Sun, 11 Nov 2012 09:07:05 +0000 (10:07 +0100)]
Merge the r and non-r variants of fdiv and fsub.
Let the emitter handle printing the r by checking the assigned registers.
Christoph Mallon [Sat, 10 Nov 2012 20:00:45 +0000 (21:00 +0100)]
Remove unnecessary tests.
out cannot be null.
Christoph Mallon [Sun, 11 Nov 2012 09:13:23 +0000 (10:13 +0100)]
Panic when asked to simulate a vfprem.
Simulating it as normal binop does only work in one special case.
It lacks the reverse form and selecting the second operand register.
So in many cases invalid code was generated silently.
Christoph Mallon [Sat, 10 Nov 2012 19:58:33 +0000 (20:58 +0100)]
Correct some off-by-one errors in ia32_emitf().
Christoph Mallon [Sun, 11 Nov 2012 22:17:00 +0000 (23:17 +0100)]
Implement binary emitter for ia32 bt.
Christoph Mallon [Sun, 11 Nov 2012 22:06:41 +0000 (23:06 +0100)]
Fake a binary emitter for ia32 asm.
Christoph Mallon [Sun, 11 Nov 2012 21:51:02 +0000 (22:51 +0100)]
Implement binary emitter for ia32 fisttp.
Christoph Mallon [Sun, 11 Nov 2012 21:47:12 +0000 (22:47 +0100)]
Implement binary emitter for ia32 popcnt.
Christoph Mallon [Sun, 11 Nov 2012 21:46:53 +0000 (22:46 +0100)]
Implement binary emitter for ia32 bswap.
Christoph Mallon [Sun, 11 Nov 2012 21:46:26 +0000 (22:46 +0100)]
Implement binary emitter for ia32 sbb0.
Christoph Mallon [Sun, 11 Nov 2012 21:45:14 +0000 (22:45 +0100)]
Implement binary emitter for ia32 ffreep.
Christoph Mallon [Sun, 11 Nov 2012 21:44:03 +0000 (22:44 +0100)]
Factorise code for binary emitters of ia32 fp operation with fp register.
Christoph Mallon [Sun, 11 Nov 2012 21:42:49 +0000 (22:42 +0100)]
Simply emit nothing for ia32 Unknown.
Christoph Mallon [Sun, 11 Nov 2012 21:41:58 +0000 (22:41 +0100)]
Implement binary emitters for ia32 bsf and bsr.
Christoph Mallon [Sun, 11 Nov 2012 21:34:58 +0000 (22:34 +0100)]
Factorise code of binary emitters for ia32 unops with 0F prefix.
Christoph Mallon [Sun, 11 Nov 2012 21:32:43 +0000 (22:32 +0100)]
Correct bemit_${OP}() and bemit_${OP}mem().