On 3/31/25 23:48, Heinrich Schuchardt wrote: > On 3/30/25 01:49, Vineet Gupta wrote: >> changes since v2 >> - dump log sanfu >> >> --- >> vsetvl phase4 uses LCM guided info to insert VSETVL insns. >> It has an additional loop to insert missing vsetvls on certain edges. >> Currently it asserts/aborts on encountering EDGE_ABNORMAL. >> When enabling go frontend with V enabled, libgo build hits the assert. >> >> It seems to be safe to just skip the abnormal edge. > > Hello Vineet, > > Is there a test case where only following an abnormal edge between code > blocks would require to call VSETVL? > > In the sketched code below following the exception would require VSETVL > to be called while the edge from the try block to the finally block > would not require this. > > try { > for (..) { > uint16_t vectorizable math > if (condition) > throw exception > uint16_t vectorizable math > } > for (..) { > uint8_t vectorizable math > } > } catch exception { > } finally > for (..) { > uint8_t vectorizable math > } > }
Yeah we are going to run testsuite with -fnon-call-exceptions to find such cases. But I'd argue, there is no need to optimize vsetvl for such esoteric cases (vs. code complexity trade-off). After all we'd just endup with an extra VSETVL in the finally block. Thx, -Vineet