This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/13776] [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120
- From: "rguenth at tat dot physik dot uni-tuebingen dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Apr 2004 15:48:15 -0000
- Subject: [Bug c++/13776] [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120
- References: <20040120183908.13776.kgardas@objectsecurity.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From rguenth at tat dot physik dot uni-tuebingen dot de 2004-04-10 15:48 -------
Subject: Re: [tree-ssa] Many C++ compile-time regression in
3.5-tree-ssa 040120
> However, it is a bit surprising that this would cause a significant
> decline in compile time. Would you have a pre-patched cc1plus binary to
> compare dump files?
Cutting off the numbers from the vars and killing <Dxxx> reveals:
@@ -256,6 +256,7 @@ virtual Smarts::Runnable::~Runnable() (t
{
bool T.;
int T.;
+ int (*__vtbl_ptr_type) () * T.;
<bb 0>:
this->_vptr.Runnable = &_ZTVN6Smarts8RunnableE[2];
(and similar in all destructors)
int fillLocStorage(int, Loc<Dim>&, constT1&) [with int Dim = 3, T1 =
Loc<3>] (currIndex, loc, a)
{
+ int currIndex.;
int ;
int d;
int T.;
@@ -1581,6 +1503,7 @@ int fillLocStorage(int, Loc<Dim>&, const
struct Domain<1,DomainTraits<Loc<1> > > * T.;
struct Loc<1> * T.;
struct Loc<1> & T.;
+ int currIndex.;
struct Domain<3,DomainTraits<Loc<3> > > * loc.;
int retval.;
int retval.;
@@ -1595,13 +1518,17 @@ int fillLocStorage(int, Loc<Dim>&, const
i = 0;
<L0>:;
+ currIndex. = currIndex + 1;
*(int &)(struct Domain<1,DomainTraits<Loc<1> > > *)(struct Loc<1>
*)(struct Loc<1> &)((struct Loc<1> *)((long unsigned int)currIndex * 4)
+ (struct Loc<1> *)(struct UninitializedVector<Loc<1>,3,int> *)(struct
Domain<3,DomainTraits<Loc<3> > > *)loc) = ((struct
DomainBase<DomainTraits<Loc<1> > > *)(struct
Domain<1,DomainTraits<Loc<1> > > *)(struct Loc<1> &)((struct Loc<1>
*)((long unsigned int)i * 4) + (struct Loc<1> *)(struct
UninitializedVector<Loc<1>,3,int> *)(struct Domain<3,DomainTraits<Loc<3>
> > *)a))->domain_m;
- currIndex = currIndex + 1;
i = i + 1;
- if (i <= 2) goto <L0>; else goto <L10>;
+ if (i <= 2) goto <L13>; else goto <L10>;
+
+<L13>:;
+ currIndex = currIndex.;
+ goto <bb 1> (<L0>);
<L10>:;
- return currIndex;
+ return currIndex.;
}
looks like DOM is now missing some optimization
then, lots of re-ordering of functions in the diff, and noise... (label
number changes, bb number changes). The dump files are huge (both
around 50MB uncompressed), if you want to download them, I can put them
to an accessible location.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13776