On 23/07/12 14:57, Ulrich Weigand wrote:
> Richard Earnshaw wrote:
>>>> Hmm, I wonder if we should just unconditionally call split_all_insns()
>>>> at the start of md_reorg when -O0.  This would address your problem, but
>>>> have the added benefit that the length calculations would be more
>>>> accurate.  We're going to have to split the insns anyway during output,
>>>> so why not get it over and done with...
> 
> OK, here's a patch to implement this solution, which does indeed fix my
> original problem as well.
> 
> Tested on arm-linux-gnueabi with no regressions.
> 
> OK for mainline?
> 
> Thanks,
> Ulrich
> 
> 
> ChangeLog:
> 
>       * config/arm/arm.c (arm_reorg): Ensure all insns are split.
> 
> Index: gcc/config/arm/arm.c
> ===================================================================
> *** gcc/config/arm/arm.c      (revision 189459)
> --- gcc/config/arm/arm.c      (working copy)
> *************** arm_reorg (void)
> *** 13359,13364 ****
> --- 13359,13371 ----
>     if (TARGET_THUMB2)
>       thumb2_reorg ();
>   
> +   /* Ensure all insns that must be split have been split at this point.
> +      Otherwise, the pool placement code below may compute incorrect
> +      insn lengths.  Note that when optimizing, all insns have already
> +      been split at this point.  */
> +   if (!optimize)
> +     split_all_insns_noflow ();
> + 
>     minipool_fix_head = minipool_fix_tail = NULL;
>   
>     /* The first insn must always be a note, or the code below won't
> 
> 

OK.

R.



Reply via email to