On 11/19/20 8:59 AM, Qing Zhao via Gcc-patches wrote:
> Hi, 
>
> PR97777 - ICE: in df_refs_verify, at df-scan.c:3991 with -O 
> -ffinite-math-only -fzero-call-used-regs=all
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97777
>
> Is a bug triggered by the new pass zero-call-used-regs, however, it’s an old 
> bug in the pass “reg-stack”.
> This pass does not correctly maintain the df information after 
> transformation. 
>
> Since the transformation is reg-stack pass is quite complicate, involving 
> both instruction changes and control
> Flow changes, I called “df_insn_rescan_all” after the transformation is done.
>
> The patch has been tested with bootstrap with 
> --enable-checking=yes,rtl,df,extra, no regression. 
>
> Okay for commit?
>
> Qing
>
> From c2573c6c8552b7b4c2eedb0684ce48b5c11436ec Mon Sep 17 00:00:00 2001
> From: qing zhao <qinz...@gcc.gnu.org>
> Date: Thu, 19 Nov 2020 16:46:50 +0100
> Subject: [PATCH] rtl-optimization: Fix data flow maintenance bug in
>  reg-stack.c [pr97777]
>
> reg-stack pass does not maintain the data flow information correctly.
> call df_insn_rescan_all after the transformation is done.
>
>         gcc/
>       PR rtl-optimization/97777
>       * reg-stack.c (rest_of_handle_stack_regs): call
>       df_insn_rescan_all if reg_to_stack return true.
>
>       gcc/testsuite/
>       PR rtl-optimization/97777
>       * gcc.target/i386/pr97777.c: New test.
I'd like to see more analysis here.

ie, precisely what data is out of date and why?

Jeff


Reply via email to