On 6/10/20 12:50 PM, Richard Biener wrote:
with -fnon-call-exceptions should trigger it.
Thanks, that works! We start with: foo (v2df a, v2df b, v2df c, v2df d) Eh tree: 1 try land:{1,<L1>} catch:{} { void * _1; v2df _2; v2df _8; <bb 2> [local count: 1073741824]: [LP 1] _8 = VEC_COND_EXPR <a_4(D) < b_5(D), c_6(D), d_7(D)>; <bb 3> [local count: 1073741824]: # _2 = PHI <{ 0.0, 0.0 }(4), _8(2)> return _2; <bb 4> [count: 0]: <L1>: [LP 1] _1 = __builtin_eh_pointer (1); __cxa_begin_catch (_1); __cxa_end_catch (); goto <bb 3>; [0.00%] I tried to use: maybe_clean_or_replace_eh_stmt (stmt, assign); which does: <bb 2> [local count: 1073741824]: [LP 1] _12 = a_4(D) < b_5(D); <bb 3> [local count: 1073741824]: _8 = VEC_COND_EXPR <_12, c_6(D), d_7(D)>; which requires to split the BB. But now I'm missing an edge: /home/marxin/Programming/testcases/vect-low.c: In function ‘v2df foo(v2df, v2df, v2df, v2df)’: /home/marxin/Programming/testcases/vect-low.c:3:6: error: BB 2 is missing an EH edge Am I doing that correctly? Or do we have a better function for it? Martin