aboutsummaryrefslogtreecommitdiff
path: root/gcc/hsa-gen.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2016-02-26 18:45:37 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2016-02-26 18:45:37 +0100
commitde0fef0dd466bc329456b36cccfa6b06768da639 (patch)
tree743839497b4cf366566149b9a459130984ab8ae0 /gcc/hsa-gen.c
parentb15e4689e6b6c582c89d57eeb79fedc8b6081aeb (diff)
downloadgcc-de0fef0dd466bc329456b36cccfa6b06768da639.zip
gcc-de0fef0dd466bc329456b36cccfa6b06768da639.tar.gz
gcc-de0fef0dd466bc329456b36cccfa6b06768da639.tar.bz2
[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
Diffstat (limited to 'gcc/hsa-gen.c')
-rw-r--r--gcc/hsa-gen.c17
1 files changed, 13 insertions, 4 deletions
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 <hsa_op_reg *> (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 <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));
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);