https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99388
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The above patch changes: --- pr99388.s 2021-03-04 15:47:31.151944020 +0100 +++ pr99388.s 2021-03-04 15:51:51.404086604 +0100 @@ -267,18 +267,21 @@ foo: .byte 0x4 // uleb128 0x4; Location expression size .byte 0x9e // DW_OP_implicit_value .byte 0x2 // uleb128 0x2 + .2byte 0x3c00 // fp or vector constant word 0 .byte 0x7 // DW_LLE_start_end (*.LLST0) .8byte .LVL1 // Location list begin address (*.LLST0) .8byte .LVL2 // Location list end address (*.LLST0) .byte 0x4 // uleb128 0x4; Location expression size .byte 0x9e // DW_OP_implicit_value .byte 0x2 // uleb128 0x2 + .2byte 0x4000 // fp or vector constant word 0 .byte 0x7 // DW_LLE_start_end (*.LLST0) .8byte .LVL2 // Location list begin address (*.LLST0) .8byte .LFE0 // Location list end address (*.LLST0) .byte 0x4 // uleb128 0x4; Location expression size .byte 0x9e // DW_OP_implicit_value .byte 0x2 // uleb128 0x2 + .2byte 0x4200 // fp or vector constant word 0 .byte 0 // DW_LLE_end_of_list (*.LLST0) .LVUS1: .uleb128 .LVU3 // View list begin (*.LVUS1) I fear there are other bugs related to handling vector constants, because for vectors of floats/doubles/__fp16 etc. we use eltsize of the element size rather than 4 (or for __fp16 2). But then we throw such debug info on the floor during expansion, so maybe we don't trigger that so often.