Thanks for comments. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59837 The patch with a test case is attached. ChangeLog: 2014-01-16 Zhenqiang Chen PR target/59837 * config/arm/arm.c (arm_emit_vfp_multi_reg_pop): Do not add REG_CFA_ADJUST_CFA NOTE if shrink-wrap is not enabled. testsuite/ChangeLog: 2014-01-16 Zhenqiang Chen * gcc.target/arm/pr59837.c: New testcase. On 15 January 2014 19:56, Ramana Radhakrishnan wrote: > Please also create a bugzilla entry for this and use the pr number here. > > Ramana > > > Sent from Samsung Mobile > > > > -------- Original message -------- > From: Zhenqiang Chen > Date: > To: gcc-patches@gcc.gnu.org > Cc: Richard Earnshaw ,Ramana Radhakrishnan > > Subject: [PATCH, ARM] ICE when building kernel raid6 neon code > > > Hi, > > The patch fixes ICE when building kernel raid6 neon code. > > lib/raid6/neon4.c: In function 'raid6_ > > neon4_gen_syndrome_real': > lib/raid6/neon4.c:113:1: internal compiler error: in > dwarf2out_frame_debug_adjust_cfa, at dwarf2cfi.c:1090 > } > > https://bugs.launchpad.net/gcc-linaro/+bug/1268893 > > Root cause: > When expanding epilogue, REG_CFA_ADJUST_CFA NOTE is added to handle > dwarf info issue for shrink-wrap. But for TARGET_APCS_FRAME, > shrink-wrap is disabled. And not all dwarf info in > arm_expand_epilogue_apcs_frame are correctly updated. > arm_emit_vfp_multi_reg_pop is called by both > arm_expand_epilogue_apcs_frame and arm_expand_epilogue. So we should > not add the NOTE in arm_emit_vfp_multi_reg_pop if shrink-wrap is not > enabled. > > Boot strap and no make check regression on ARM Chromebook. > > OK for trunk? > > Thanks! > -Zhenqiang > > ChangeLog: > 2014-01-15 Zhenqiang Chen > > * config/arm/arm.c (arm_emit_vfp_multi_reg_pop): Do not add > REG_CFA_ADJUST_CFA NOTE if shrink-wrap is not enabled. > > diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c > index 18196b3..1ccb796 100644 > --- a/gcc/config/arm/arm.c > +++ b/gcc/config/arm/arm.c > @@ -19890,8 +19890,12 @@ arm_emit_vfp_multi_reg_pop (int first_reg, > int num_regs, rtx base_reg) > par = emit_insn (par); > REG_NOTES (par) = dwarf; > > - arm_add_cfa_adjust_cfa_note (par, 2 * UNITS_PER_WORD * num_regs, > - base_reg, base_reg); > + /* REG_CFA_ADJUST_CFA NOTE is added to handle dwarf info issue when > + shrink-wrap is enabled. So when shrink-wrap is not enabled, we should > + not add the note. */ > + if (flag_shrink_wrap) > + arm_add_cfa_adjust_cfa_note (par, 2 * UNITS_PER_WORD * num_regs, > + base_reg, base_reg); > } > > /* Generate and emit a pattern that will be recognized as LDRD > pattern. If even > > > -- IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > > ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2557590 > ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2548782