https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89303
--- Comment #20 from Jakub Jelinek <jakub at gcc dot gnu.org> --- On: # .MEM_64 = VDEF <.MEM_63> MEM[(struct __weak_ptr *)_16]._M_ptr = _16; stmt_may_clobber_global_p (stmt) returns false. (gdb) p pt_solution_includes_global (&cfun->gimple_df->ssa_names->m_vecdata[16]->ssa_name.info.ptr_info->pt) $99 = false (gdb) p pt_solution_includes_global (&cfun->gimple_df->ssa_names->m_vecdata[24]->ssa_name.info.ptr_info->pt) $100 = true This makes no sense to me, when _16 is &MEM[(struct __aligned_buffer *)_24 + 16B]._M_storage, thus effectively just POINTER_PLUS_EXPR from _24, it could have different alignment, but how it can have different points-to info? (gdb) p debug_tree (cfun->gimple_df->ssa_names->m_vecdata[16]) <ssa_name 0x7fffea38eb88 type <pointer_type 0x7fffea81c000 type <void_type 0x7fffea813f18 void type_6 VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffea813f18 pointer_to_this <pointer_type 0x7fffea81c000>> public unsigned type_6 DI size <integer_cst 0x7fffea7f5e28 constant 64> unit-size <integer_cst 0x7fffea7f5e40 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffea81c000 pointer_to_this <pointer_type 0x7fffea8247e0>> visited def_stmt _16 = &MEM[(struct __aligned_buffer *)_24 + 16B]._M_storage; version:16 ptr-info 0x7fffea39a288> (gdb) p debug_tree (cfun->gimple_df->ssa_names->m_vecdata[24]) <ssa_name 0x7fffea38edc8 type <pointer_type 0x7fffea5f3a80 type <record_type 0x7fffea5e9348 _Sp_counted_ptr_inplace addressable tree_2 needs-constructing type_1 type_4 type_5 type_6 BLK size <integer_cst 0x7fffea5a2c18 constant 320> unit-size <integer_cst 0x7fffea5f2390 constant 40> user align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffea5e9348 fields <function_decl 0x7fffea61ae00 __ct > context <namespace_decl 0x7fffea80f098 std> full-name "class std::_Sp_counted_ptr_inplace<blob, std::allocator<blob>, 0>" needs-constructor needs-destructor X(constX&) this=(X&) n_parents=1 use_template=1 interface-unknown pointer_to_this <pointer_type 0x7fffea5f3a80> chain <type_decl 0x7fffea5e2c78 _Sp_counted_ptr_inplace>> sizes-gimplified public unsigned type_6 DI size <integer_cst 0x7fffea7f5e28 constant 64> unit-size <integer_cst 0x7fffea7f5e40 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set 16 canonical-type 0x7fffea5f3a80> visited def_stmt _24 = malloc (40); version:24 ptr-info 0x7fffea39a138>