https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114887
--- Comment #2 from JuzheZhong <juzhe.zhong at rivai dot ai> --- I think there is a too conservative analysis here: note: _1: type = float, start = 1, end = 6 note: _5: type = float, start = 6, end = 8 note: _3: type = float, start = 3, end = 7 note: _4: type = float, start = 5, end = 6 note: _2: type = float, start = 2, end = 3 note: _28: type = float, start = 7, end = 9 note: sum_18: type = real_t, start = 9, end = 9 note: sum_26: type = real_t, start = 0, end = 9 The variables live at point 6 should be: 1. _1 2. _3 3. _4 4. sum_26 So there are total 4 variables each variable occupies 8 register at LMUL = 8. Then the total live register should 4 * 8 = 32 which is ok to pick LMUL = 8.