2017-05-15 Jeff Law <law@redhat.com>
+ * reorg.c (relax_delay_slots): Create a new variable to hold
+ the temporary target rather than clobbering TARGET_LABEL.
+
* config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add
missing argument to extract_bit_field call.
* config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise.
&& simplejump_or_return_p (trial_seq->insn (0))
&& redundant_insn (trial_seq->insn (1), insn, vNULL))
{
- target_label = JUMP_LABEL (trial_seq->insn (0));
- if (ANY_RETURN_P (target_label))
- target_label = find_end_label (target_label);
+ rtx temp_label = JUMP_LABEL (trial_seq->insn (0));
+ if (ANY_RETURN_P (temp_label))
+ temp_label = find_end_label (temp_label);
- if (target_label
+ if (temp_label
&& redirect_with_delay_slots_safe_p (delay_jump_insn,
- target_label, insn))
+ temp_label, insn))
{
update_block (trial_seq->insn (1), insn);
- reorg_redirect_jump (delay_jump_insn, target_label);
+ reorg_redirect_jump (delay_jump_insn, temp_label);
next = insn;
continue;
}
+2017-05-15 Jeff Law <law@redhat.com>
+
+ * gcc.target/mips/reorgbug-1.c: New test.
+
2017-05-15 Pierre-Marie de Rodat <derodat@adacore.com>
* gnat.dg/specs/pack13.ads: New test.
--- /dev/null
+/* { dg-options "-O2 -msoft-float -mips2" } */
+
+typedef long int __int32_t;
+typedef long unsigned int __uint32_t;
+typedef union
+{
+ double value;
+ struct
+ {
+ __uint32_t msw;
+ __uint32_t lsw;
+ }
+ parts;
+}
+ieee_double_shape_type;
+double
+__ieee754_fmod (double x, double y, int z, int xx)
+{
+ __int32_t n, hx, hy, hz, ix, iy, sx, i;
+ __uint32_t lx, ly, lz;
+ ieee_double_shape_type ew_u;
+ ew_u.value = (x);
+ (lx) = ew_u.parts.lsw;
+ ew_u.value = (y);
+ (hy) = ew_u.parts.msw;
+ (ly) = ew_u.parts.lsw;
+ if (hy == 0 || hx >= 0x7ff00000)
+ return (x * y);
+ if (z)
+ {
+ if ((hx < hy) || (lx < ly))
+ return x;
+ lz = lx - ly;
+ lx = lz + lz;
+ }
+ ieee_double_shape_type iw_u;
+ iw_u.parts.lsw = (lx);
+ return iw_u.value;
+}