Thank a lot, Jeff.

Pan

-----Original Message-----
From: Jeff Law <jeffreya...@gmail.com> 
Sent: Tuesday, June 11, 2024 4:15 AM
To: Li, Pan2 <pan2...@intel.com>; gcc-patches@gcc.gnu.org
Cc: juzhe.zh...@rivai.ai; kito.ch...@gmail.com; richard.guent...@gmail.com
Subject: Re: [PATCH v1] Widening-Mul: Fix one ICE of gcall insertion for PHI 
match



On 6/10/24 8:49 AM, pan2...@intel.com wrote:
> When enabled the PHI handing for COND_EXPR,  we need to insert the gcall
> to replace the PHI node.  Unfortunately,  I made a mistake that insert
> the gcall to before the last stmt of the bb.  See below gimple,  the PHI
> is located at no.1 but we insert the gcall (aka no.9) to the end of
> the bb.  Then the use of _9 in no.2 will have no def and will trigger
> ICE when verify_ssa.
> 
>    1. # _9 = PHI <_3(4), 18446744073709551615(3)> // The PHI node to be 
> deleted.
>    2. prephitmp_36 = (char *) _9;
>    3. buf.write_base = string_13(D);
>    4. buf.write_ptr = string_13(D);
>    5. buf.write_end = prephitmp_36;
>    6. buf.written = 0;
>    7. buf.mode = 3;
>    8. _7 = buf.write_end;
>    9. _9 = .SAT_ADD (string.0_2, maxlen_15(D));   // Insert gcall to last bb 
> by mistake
> 
> This patch would like to insert the gcall to before the start of the bb
> stmt.  To ensure the possible use of PHI_result will have a def exists.
> After this patch the above gimple will be:
> 
>    0. _9 = .SAT_ADD (string.0_2, maxlen_15(D));   // Insert gcall to start bb 
> by mistake
>    1. # _9 = PHI <_3(4), 18446744073709551615(3)> // The PHI node to be 
> deleted.
>    2. prephitmp_36 = (char *) _9;
>    3. buf.write_base = string_13(D);
>    4. buf.write_ptr = string_13(D);
>    5. buf.write_end = prephitmp_36;
>    6. buf.written = 0;
>    7. buf.mode = 3;
>    8. _7 = buf.write_end;
> 
> The below test suites are passed for this patch:
> * The rv64gcv fully regression test with newlib.
> * The rv64gcv build with glibc.
> * The x86 regression test with newlib.
> * The x86 bootstrap test with newlib.
> 
>       PR target/115387
> 
> gcc/ChangeLog:
> 
>       * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children): Take
>       the gsi of start_bb instead of last_bb.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gcc.target/riscv/pr115387-1.c: New test.
>       * gcc.target/riscv/pr115387-2.c: New test.
I did a fresh x86_64 bootstrap and regression test and pushed this.

jeff

Reply via email to