]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[hsa/69674] Make testsuite libgomp.c/for-3.c compile with -m32
authorMartin Jambor <mjambor@suse.cz>
Fri, 26 Feb 2016 17:45:37 +0000 (18:45 +0100)
committerMartin Jambor <jamborm@gcc.gnu.org>
Fri, 26 Feb 2016 17:45:37 +0000 (18:45 +0100)
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

gcc/ChangeLog
gcc/hsa-gen.c

index bf03f181b164f7319f1759f15120415a219d1677..6af840d4d3561ee0400001a38723a979434472dd 100644 (file)
@@ -1,3 +1,10 @@
+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
index be402ddda71e034032892da35a67b6a37e2bdb63..5c7744bc0746d7714b5dce9b41e73a28d08cfeb0 100644 (file)
@@ -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);