https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86400
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- # /home/jwakely/gcc/9/include/c++/9.0.0/bits/basic_string.h:236: _M_construct(__beg, __end, _Tag()); .loc 3 236 11 is_stmt 0 movl $_ZZ4foo2vE4root, %edx #, movq %rdx, %rsi #, movq %rsp, %rdi #, .LEHB0: call _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag # The output of -fdump-tree-optimized: <bb 2> [local count: 8687547398]: MEM[(struct &)&d] ={v} {CLOBBER}; MEM[(struct &)&d] ={v} {CLOBBER}; MEM[(struct &)&d + 8] ={v} {CLOBBER}; MEM[(struct _Rb_tree_header *)&d + 8B]._M_header._M_color = 0; MEM[(struct _Rb_tree_header *)&d + 8B]._M_header._M_parent = 0B; MEM[(struct _Rb_tree_header *)&d + 8B]._M_header._M_left = &MEM[(struct _Rb_tree_header *)&d + 8B]._M_header; MEM[(struct _Rb_tree_header *)&d + 8B]._M_header._M_right = &MEM[(struct _Rb_tree_header *)&d + 8B]._M_header; MEM[(struct _Rb_tree_header *)&d + 8B]._M_node_count = 0; MEM[(struct _Rb_tree_const_iterator *)&__position] = &MEM[(struct _Rb_tree *)&d]._M_impl.D.30202._M_header; MEM[(struct &)&D.38131] ={v} {CLOBBER}; MEM[(struct &)&D.38131] ={v} {CLOBBER}; MEM[(struct _Alloc_hider *)&D.38131]._M_p = &D.38131.D.18738._M_local_buf; iftmp.26_33 = &root; std::__cxx11::basic_string<char>::_M_construct<const char*> (&D.38131, &root, iftmp.26_33, D.38135); iftmp.26_33 is the __end argument, and is set to the same value as __beg.