https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99122
--- Comment #4 from Martin Jambor <jamborm at gcc dot gnu.org> --- With the patch from comment #3, the following sequence with the problematic call: x.1_26 = __builtin_alloca_with_align (_24, 8); g (WITH_SIZE_EXPR <*x.1_26, _22>, WITH_SIZE_EXPR <*x.1_26, _22>); __builtin_stack_restore (saved_stack.2_15); is turned by einline into: x.1_26 = __builtin_alloca_with_align (_24, 8); x_27 = MEM <double> [(struct *)x.1_26]; y_29 = MEM <double> [(struct *)x.1_26]; _30 = x_27 u<= y_29; _31 = ~_30; _32 = (int) _31; __builtin_stack_restore (saved_stack.2_15); Which looks OKish, under the circumstances, to me. Let me look at the second testcase now.