Tested in the same way as the aarch-common.c patch. OK to install? Thanks, Richard
gcc/ * config/arm/arm.c (arm_note_pic_base): Delete. (arm_cannot_copy_insn_p): Use FOR_EACH_SUBRTX. Index: gcc/config/arm/arm.c =================================================================== --- gcc/config/arm/arm.c 2014-11-05 11:48:55.030053470 +0000 +++ gcc/config/arm/arm.c 2014-11-05 11:48:57.406073646 +0000 @@ -13157,16 +13157,6 @@ tls_mentioned_p (rtx x) /* Must not copy any rtx that uses a pc-relative address. */ -static int -arm_note_pic_base (rtx *x, void *date ATTRIBUTE_UNUSED) -{ - if (GET_CODE (*x) == UNSPEC - && (XINT (*x, 1) == UNSPEC_PIC_BASE - || XINT (*x, 1) == UNSPEC_PIC_UNIFIED)) - return 1; - return 0; -} - static bool arm_cannot_copy_insn_p (rtx_insn *insn) { @@ -13175,7 +13165,16 @@ arm_cannot_copy_insn_p (rtx_insn *insn) if (recog_memoized (insn) == CODE_FOR_tlscall) return true; - return for_each_rtx (&PATTERN (insn), arm_note_pic_base, NULL); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, PATTERN (insn), ALL) + { + const_rtx x = *iter; + if (GET_CODE (x) == UNSPEC + && (XINT (x, 1) == UNSPEC_PIC_BASE + || XINT (x, 1) == UNSPEC_PIC_UNIFIED)) + return true; + } + return false; } enum rtx_code