From dfdd30af1c69e2ce0c773fd8edbc79eac5caa71d Mon Sep 17 00:00:00 2001 From: jamborm Date: Fri, 26 Feb 2016 17:45:37 +0000 Subject: [PATCH] [hsa/69674] Make testsuite libgomp.c/for-3.c compile with -m32 2016-02-26 Martin Jambor 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233750 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/hsa-gen.c | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf03f18..6af840d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2016-02-26 Martin Jambor + 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 + * hsa.h (is_a_helper): New overload for hsa_op_immed for hsa_op_with_type operands. (hsa_unsigned_type_for_type): Declare. diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c index be402dd..5c7744b 100644 --- a/gcc/hsa-gen.c +++ b/gcc/hsa-gen.c @@ -2105,9 +2105,17 @@ gen_hsa_addr (tree ref, hsa_bb *hbb, HOST_WIDE_INT *output_bitsize = NULL, } if (TMR_INDEX2 (ref)) { - 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 (disp2), hbb); + if (TREE_CODE (TMR_INDEX2 (ref)) == SSA_NAME) + { + 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 (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)); break; @@ -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), 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 = new hsa_insn_basic (2, BRIG_OPCODE_LDA, BRIG_TYPE_U64, dest, addr); -- 2.7.4