https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69044

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marxin at gcc dot gnu.org

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Hello

(gdb) p thunk->debug()
strncasecmp/1 (strncasecmp) @0x7ffff69ec000
  Type: function definition analyzed
  Visibility: externally_visible public
  Aux: @0x1f39050  References: strncasecmp.chkp/4 (chkp)
  Referring: 
  Availability: available
  First run: 0
  Function flags:
  Thunk fixed offset 0 virtual value 0 has virtual offset 0)
  Called by: special_command.chkp/3 (1.00 per call) 
  Calls: strncasecmp.chkp/4 (1.00 per call) 
  Has instrumented version.
$1 = void
(gdb) p node->debug()
strncasecmp.chkp.constprop.1/8 (strncasecmp.chkp.constprop) @0x7ffff69ec730
  Type: function definition analyzed
  Visibility: public artificial
  References: 
  Referring: 
  Availability: local
  First run: 0
  Function flags: local
  Called by: 
  Calls: 

As 'thunk' has set DECL_INITIAL:

(gdb) p debug_tree(thunk->decl.decl_common.initial)
 <block 0x7ffff69eb000 used
    supercontext <function_decl 0x7ffff69559a0 strncasecmp
        type <function_type 0x7ffff69d2540 type <integer_type 0x7ffff68d17e0
int>
            QI
            size <integer_cst 0x7ffff68cdd98 constant 8>
            unit size <integer_cst 0x7ffff68cddb0 constant 1>
            align 8 symtab 0 alias set -1 canonical type 0x7ffff69d2000
            attributes <tree_list 0x7ffff69565c8
                purpose <identifier_node 0x7ffff68f13c0 nonnull>>
            arg-types <tree_list 0x7ffff69d1b18 value <pointer_type
0x7ffff68efbd0>
                chain <tree_list 0x7ffff69d1af0 value <pointer_type
0x7ffff68efbd0>
                    chain <tree_list 0x7ffff69d1ac8 value <integer_type
0x7ffff68d1930 long int>
                        chain <tree_list 0x7ffff68e17a8 value <void_type
0x7ffff68eb150 void>>>>>
            pointer_to_this <pointer_type 0x7ffff69d2498>>
        readonly addressable used nothrow public static built-in decl_3 decl_5
QI file /home/marxin/Programming/testcases/PR69044/tc.i line 2 col 5
        align 8 built-in BUILT_IN_NORMAL:BUILT_IN_STRNCASECMP context
<translation_unit_decl 0x7ffff68d9258 D.1774> attributes <tree_list
0x7ffff69566b8> initial <block 0x7ffff69eb000>
        result <result_decl 0x7ffff68d9168 D.1771 type <integer_type
0x7ffff68d17e0 int>
            ignored SI file /home/marxin/Programming/testcases/PR69044/tc.i
line 2 col 5
            size <integer_cst 0x7ffff68cdee8 constant 32>
            unit size <integer_cst 0x7ffff68cdf00 constant 4>
            align 32 context <function_decl 0x7ffff69559a0 strncasecmp>>
        chain <function_decl 0x7ffff6955a80 __builtin_strncat type
<function_type 0x7ffff6952f18>
            nothrow public external built-in decl_6 QI file <built-in> line 0
col 0
            align 8 built-in BUILT_IN_NORMAL:BUILT_IN_STRNCAT context
<translation_unit_decl 0x7ffff68d9258 D.1774> attributes <tree_list
0x7ffff6956730> chain <function_decl 0x7ffff6955b60 strncat>>>>

The block is copied at:

290       if (!node->clone.args_to_skip)
291         new_decl = copy_node (thunk->decl);

That's the way how the checking_assert is triggered.

Martin

Reply via email to