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