}
/* Now set the attributes we computed above. */
+ attrs.addrspace = TYPE_ADDR_SPACE (type);
set_mem_attrs (ref, &attrs);
/* If this is already known to be a scalar or aggregate, we are done. */
case CODE_LABEL:
case PC:
case CC0:
+ case RETURN:
case SCRATCH:
/* SCRATCH must be shared because they represent distinct values. */
return;
case CODE_LABEL:
case PC:
case CC0:
+ case RETURN:
return;
case DEBUG_INSN:
return insn;
}
-/* Return the last label to mark the same position as LABEL. Return null
- if LABEL itself is null. */
+/* Return the last label to mark the same position as LABEL. Return LABEL
+ itself if it is null or any return rtx. */
rtx
skip_consecutive_labels (rtx label)
{
rtx insn;
+ if (label && ANY_RETURN_P (label))
+ return label;
+
for (insn = label; insn != 0 && !INSN_P (insn); insn = NEXT_INSN (insn))
if (LABEL_P (insn))
label = insn;
break;
#endif
+ case REG_ARGS_SIZE:
+ fixup_args_size_notes (NULL_RTX, insn_last, INTVAL (XEXP (note, 0)));
+ break;
+
default:
break;
}
case CODE_LABEL:
case PC:
case CC0:
+ case RETURN:
return orig;
case CLOBBER:
if (REG_P (XEXP (orig, 0)) && REGNO (XEXP (orig, 0)) < FIRST_PSEUDO_REGISTER)