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.

Reply via email to