Jason Merrill <ja...@redhat.com> writes:

> +// { dg-final { scan-assembler "a1.*(0x\[0-9a-f\]+)\[ \t\]*# 
> DW_AT_type.*\\1. 
> DW_TAG_unspecified_type.*DW_AT_specification\[\n\r\]{1,2}\[^\n\r\]*(0x\[0-9a-f\]+)\[
>  \t\]*# DW_AT_type.*\\2. DW_TAG_base_type" } }

This regexp is completely broken.

Here's what I get on m68k:

        .uleb128 0x3    | (DIE (0x2b) DW_TAG_subprogram)
                        | DW_AT_external
        .ascii "a1\0"   | DW_AT_name
        .byte   0x1     | DW_AT_decl_file 
(/daten/aranym/gcc/gcc-20140129/gcc/testsuite/g++.dg/debug/dwarf2/auto1.C)
        .byte   0x17    | DW_AT_decl_line
        .long   .LASF2  | DW_AT_linkage_name: "_ZN1A2a1Ev"
        .long   0x44    | DW_AT_type
                        | DW_AT_declaration
        .long   0x3d    | DW_AT_object_pointer
        .uleb128 0x4    | (DIE (0x3d) DW_TAG_formal_parameter)
        .long   0x49    | DW_AT_type
                        | DW_AT_artificial
        .byte   0       | end of children of DIE 0x2b
        .byte   0       | end of children of DIE 0x21
        .uleb128 0x5    | (DIE (0x44) DW_TAG_unspecified_type)
        .long   .LASF3  | DW_AT_name: "auto"
        .uleb128 0x6    | (DIE (0x49) DW_TAG_pointer_type)
        .byte   0x4     | DW_AT_byte_size
        .long   0x21    | DW_AT_type
        .uleb128 0x7    | (DIE (0x4f) DW_TAG_subprogram)
        .long   0x2b    | DW_AT_specification
        .long   0x77    | DW_AT_type
        .long   .LFB0   | DW_AT_low_pc
        .long   .LFE0-.LFB0     | DW_AT_high_pc
        .uleb128 0x1    | DW_AT_frame_base
        .byte   0x9c    | DW_OP_call_frame_cfa
        .long   0x6a    | DW_AT_object_pointer
                        | DW_AT_GNU_all_call_sites
        .long   0x77    | DW_AT_sibling
        .uleb128 0x8    | (DIE (0x6a) DW_TAG_formal_parameter)
        .long   .LASF4  | DW_AT_name: "this"
        .long   0x7e    | DW_AT_type
                        | DW_AT_artificial
        .uleb128 0x2    | DW_AT_location
        .byte   0x91    | DW_OP_fbreg
        .sleb128 0
        .byte   0       | end of children of DIE 0x4f
        .uleb128 0x9    | (DIE (0x77) DW_TAG_base_type)
        .byte   0x4     | DW_AT_byte_size
        .byte   0x5     | DW_AT_encoding
        .ascii "int\0"  | DW_AT_name

And this is what I get on ia64:

        .uleb128 0x3    // (DIE (0x2f) DW_TAG_subprogram)
                        // DW_AT_external
        .ascii "a1\0"   // DW_AT_name
        data1   0x1     // DW_AT_decl_file 
(/usr/local/gcc/gcc-20140129/gcc/testsuite/g++.dg/debug/dwarf2/auto1.C)
        data1   0x17    // DW_AT_decl_line
        data4.ua        @secrel(.LASF2) // DW_AT_linkage_name: "_ZN1A2a1Ev"
        data4.ua        0x48    // DW_AT_type
                        // DW_AT_declaration
        data4.ua        0x41    // DW_AT_object_pointer
        .uleb128 0x4    // (DIE (0x41) DW_TAG_formal_parameter)
        data4.ua        0x4d    // DW_AT_type
                        // DW_AT_artificial
        data1   0       // end of children of DIE 0x2f
        data1   0       // end of children of DIE 0x25
        .uleb128 0x5    // (DIE (0x48) DW_TAG_unspecified_type)
        data4.ua        @secrel(.LASF3) // DW_AT_name: "auto"
        .uleb128 0x6    // (DIE (0x4d) DW_TAG_pointer_type)
        data1   0x8     // DW_AT_byte_size
        data4.ua        0x25    // DW_AT_type
        .uleb128 0x7    // (DIE (0x53) DW_TAG_subprogram)
        data4.ua        0x2f    // DW_AT_specification
        data4.ua        0x85    // DW_AT_type
        data8.ua        .LFB0   // DW_AT_low_pc
        data8.ua        .LFE0-.LFB0     // DW_AT_high_pc
        data4.ua        @secrel(.LLST0) // DW_AT_frame_base
        data4.ua        0x78    // DW_AT_object_pointer
                        // DW_AT_GNU_all_call_sites
        data4.ua        0x85    // DW_AT_sibling
        .uleb128 0x8    // (DIE (0x78) DW_TAG_formal_parameter)
        data4.ua        @secrel(.LASF4) // DW_AT_name: "this"
        data4.ua        0x8c    // DW_AT_type
                        // DW_AT_artificial
        .uleb128 0x2    // DW_AT_location
        data1   0x91    // DW_OP_fbreg
        .sleb128 0
        data1   0       // end of children of DIE 0x53
        .uleb128 0x9    // (DIE (0x85) DW_TAG_base_type)
        data1   0x4     // DW_AT_byte_size
        data1   0x5     // DW_AT_encoding
        .ascii "int\0"  // DW_AT_name

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

Reply via email to