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