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.

Reply via email to