------- Additional Comments From steven at gcc dot gnu dot org 2005-01-12 11:51 ------- This is the .generic dump: void Iterator::IsEnd() const (this) { struct Iterator D.1926; end (&D.1926, 0B) [return slot addr]; compare (this, &D.1926); } Iterator::Iterator() (this) { IsEnd (this); } Iterator Map::end() const (this) { struct Iterator & D.1937; D.1937 = <retval>; __comp_ctor (D.1937); return <retval>; } void Foo() () { struct Iterator D.1941; { struct Map f; end (&D.1941, &f) [return slot addr]; } } In the gimple dump we suddenly have 9 compare calls, so that the .cfg dump looks like this: # BLOCK 0 # PRED: ENTRY (fallthru) D.1937 = <retval>; this = D.1937; this = this; D.1951 = &D.1952; this = D.1951; this = this; D.1959 = &D.1960; this = D.1959; this = this; D.1967 = &D.1968; this = D.1967; this = this; D.1975 = &D.1976; this = D.1975; this = this; D.1983 = &D.1984; this = D.1983; this = this; D.1991 = &D.1992; this = D.1991; this = this; D.1999 = &D.2000; this = D.1999; this = this; D.2007 = &D.2008; this = D.2007; this = this; end (&D.2013, 0B) [return slot addr]; compare (this, &D.2013); compare (this, &D.2005); compare (this, &D.1997); compare (this, &D.1989); compare (this, &D.1981); compare (this, &D.1973); compare (this, &D.1965); compare (this, &D.1957); compare (this, &D.1949); return <retval>; # SUCC: EXIT
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19241