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