Commit de0fef0d by Martin Jambor Committed by Martin Jambor

[hsa/69674] Make testsuite libgomp.c/for-3.c compile with -m32

2016-02-26  Martin Jambor  <mjambor@suse.cz>

	pr hsa/69674
	* hsa-gen.c (gen_hsa_phi_from_gimple_phi): Use proper hsa type for
	pointers.
	(gen_hsa_addr): Allow integer constants in TMR_INDEX2.

From-SVN: r233750
parent b15e4689
2016-02-26 Martin Jambor <mjambor@suse.cz> 2016-02-26 Martin Jambor <mjambor@suse.cz>
pr hsa/69674
* hsa-gen.c (gen_hsa_phi_from_gimple_phi): Use proper hsa type for
pointers.
(gen_hsa_addr): Allow integer constants in TMR_INDEX2.
2016-02-26 Martin Jambor <mjambor@suse.cz>
* hsa.h (is_a_helper): New overload for hsa_op_immed for * hsa.h (is_a_helper): New overload for hsa_op_immed for
hsa_op_with_type operands. hsa_op_with_type operands.
(hsa_unsigned_type_for_type): Declare. (hsa_unsigned_type_for_type): Declare.
......
...@@ -2105,9 +2105,17 @@ gen_hsa_addr (tree ref, hsa_bb *hbb, HOST_WIDE_INT *output_bitsize = NULL, ...@@ -2105,9 +2105,17 @@ gen_hsa_addr (tree ref, hsa_bb *hbb, HOST_WIDE_INT *output_bitsize = NULL,
} }
if (TMR_INDEX2 (ref)) if (TMR_INDEX2 (ref))
{ {
hsa_op_base *disp2 = hsa_cfun->reg_for_gimple_ssa if (TREE_CODE (TMR_INDEX2 (ref)) == SSA_NAME)
(TMR_INDEX2 (ref))->get_in_type (addrtype, hbb); {
reg = add_addr_regs_if_needed (reg, as_a <hsa_op_reg *> (disp2), hbb); hsa_op_base *disp2 = hsa_cfun->reg_for_gimple_ssa
(TMR_INDEX2 (ref))->get_in_type (addrtype, hbb);
reg = add_addr_regs_if_needed (reg, as_a <hsa_op_reg *> (disp2),
hbb);
}
else if (TREE_CODE (TMR_INDEX2 (ref)) == INTEGER_CST)
offset += wi::to_offset (TMR_INDEX2 (ref));
else
gcc_unreachable ();
} }
offset += wi::to_offset (TMR_OFFSET (ref)); offset += wi::to_offset (TMR_OFFSET (ref));
break; break;
...@@ -5329,7 +5337,8 @@ gen_hsa_phi_from_gimple_phi (gimple *phi_stmt, hsa_bb *hbb) ...@@ -5329,7 +5337,8 @@ gen_hsa_phi_from_gimple_phi (gimple *phi_stmt, hsa_bb *hbb)
hsa_op_address *addr = gen_hsa_addr (TREE_OPERAND (op, 0), hsa_op_address *addr = gen_hsa_addr (TREE_OPERAND (op, 0),
hbb_src); hbb_src);
hsa_op_reg *dest = new hsa_op_reg (BRIG_TYPE_U64); hsa_op_reg *dest
= new hsa_op_reg (hsa_get_segment_addr_type (BRIG_SEGMENT_FLAT));
hsa_insn_basic *insn hsa_insn_basic *insn
= new hsa_insn_basic (2, BRIG_OPCODE_LDA, BRIG_TYPE_U64, = new hsa_insn_basic (2, BRIG_OPCODE_LDA, BRIG_TYPE_U64,
dest, addr); dest, addr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment