public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/25878]  New: Excessive memory and compile-time with std::map init sequence
@ 2006-01-20 15:21 rguenth at gcc dot gnu dot org
  2006-01-20 15:23 ` [Bug c++/25878] " rguenth at gcc dot gnu dot org
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-01-20 15:21 UTC (permalink / raw)
  To: gcc-bugs

The attached testcase needs an excessive amount of memory and compile-time to
build with -O2.  500MB max. virtual memory and 1m10s compile-time on a x86_64
machine.

The problem is inlining causes the CodeMaps::CodeMaps constructor to explode
in CFG size (also due to exception handling).


-- 
           Summary: Excessive memory and compile-time with std::map init
                    sequence
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: memory-hog
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
@ 2006-01-20 15:23 ` rguenth at gcc dot gnu dot org
  2006-01-20 15:26 ` rguenth at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-01-20 15:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2006-01-20 15:23 -------
Created an attachment (id=10688)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10688&action=view)
testcase

Preprocessed testcase, preprocessed with gcc 4.1 on a SuSE 10.1 beta x86_64.

I minimized it for topformflat level 0 and 0 with namespaces expanded. 
Minimizing
for level 1 minimized too far.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
  2006-01-20 15:23 ` [Bug c++/25878] " rguenth at gcc dot gnu dot org
@ 2006-01-20 15:26 ` rguenth at gcc dot gnu dot org
  2006-01-20 15:37 ` pinskia at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-01-20 15:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from rguenth at gcc dot gnu dot org  2006-01-20 15:26 -------
Basically, the initialization sequence expands to a sequence of (.03.gimple):

              __comp_ctor  (&D.68628);
              try
                {
                  __comp_ctor  (&D.68629, &"ab"[0], &D.68628);
                  try
                    {
                      D.70658 = &this->iso639_1;
                      D.70666 = operator[] (D.70658, &D.68629);
                      D.70667 = operator= (D.70666, &"Abkhazian"[0]);
                      __comp_ctor  (&D.68625);
                      try
                        {
                          __comp_ctor  (&D.68626, &"abk"[0], &D.68625);
                          try
                            {
                              D.70659 = &this->iso639_2;
                              D.70668 = operator[] (D.70659, &D.68626);
                              operator= (D.70668, D.70667);
                            }
                            }
                          finally
                            {
                              __comp_dtor  (&D.68626);
                            }
                        }
                      finally
                        {
                          __comp_dtor  (&D.68625);
                        }
                    }
                  finally
                    {
                      __comp_dtor  (&D.68629);
                    }
                }
              finally
                {
                  __comp_dtor  (&D.68628);
                }

Now do this 472 times and you're screwed.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
  2006-01-20 15:23 ` [Bug c++/25878] " rguenth at gcc dot gnu dot org
  2006-01-20 15:26 ` rguenth at gcc dot gnu dot org
@ 2006-01-20 15:37 ` pinskia at gcc dot gnu dot org
  2006-01-20 15:48 ` pinskia at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-01-20 15:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from pinskia at gcc dot gnu dot org  2006-01-20 15:37 -------
This is all due to recursive inlining IIRC.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2006-01-20 15:37 ` pinskia at gcc dot gnu dot org
@ 2006-01-20 15:48 ` pinskia at gcc dot gnu dot org
  2006-01-20 15:50 ` rguenth at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-01-20 15:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from pinskia at gcc dot gnu dot org  2006-01-20 15:48 -------
This is all caused by C++ and temporary variables.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2006-01-20 15:48 ` pinskia at gcc dot gnu dot org
@ 2006-01-20 15:50 ` rguenth at gcc dot gnu dot org
  2006-01-20 15:53 ` rguenth at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-01-20 15:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from rguenth at gcc dot gnu dot org  2006-01-20 15:50 -------
At .ssa we have for the posted fragment the following loads of basic blocks
and exception objects:

<bb 1>:
  D.68636_176 = &this_1->iso639_1;
  D.68641_177 = operator[] (D.68636_176, &D.68639);

<bb 2>:
  this_230 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
D.68641_177;
  __s_231 = &"Abkhazian"[0];
  this_232 = this_230;
  __s_233 = __s_231;
  __s_234 = __s_233;
  D.76438_235 = strlen (__s_234);
  D.76432_236 = D.76438_235;
  D.76433_237 = assign (this_232, __s_233, D.76432_236);

<bb 3>:
  D.76434_238 = D.76433_237;
  D.76435_239 = D.76434_238;
  D.76436_240 = D.76435_239;
  D.68642_241 = D.76436_240;
  this.146_242 = (struct new_allocator<char> *) &D.68644;
  this_243 = (struct new_allocator<char> * const) this.146_242;
  __comp_ctor  (&D.68643, &"abk"[0], &D.68644);

<bb 4>:
  D.68637_248 = &this_1->iso639_2;
  D.68645_249 = operator[] (D.68637_248, &D.68643);

<bb 5>:
  this_302 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
D.68645_249;
  __str_303 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > &) D.68642_241;
  D.76444_304 = assign (this_302, __str_303);

<bb 6>:
  D.76445_305 = D.76444_304;
  D.76443_306 = D.76445_305;
  this_307 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
&D.68643;
  this_308 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_307;
  D.76520_309 = &D.76510;
  D.76521_310 = &this_308->_M_dataplus;
  D.76522_311 = (struct allocator<char> *) D.76521_310;
  this_312 = (struct allocator<char> * const) D.76520_309;
  __a_313 = (struct allocator<char> &) D.76522_311;
  __a.148_314 = (struct new_allocator<char> *) __a_313;
  this.149_315 = (struct new_allocator<char> *) this_312;
  this_316 = (struct new_allocator<char> * const) this.149_315;
  D.76525_317 = (struct new_allocator<char> &) __a.148_314;
  this_318 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_307;
  this_319 = this_318;
  D.76534_320 = this_319->_M_dataplus._M_p;
  D.76530_321 = D.76534_320;
  D.76531_322 = (struct _Rep *) D.76530_321;
  D.76532_323 = D.76531_322 + -24B;
  D.76511_324 = D.76532_323;
  this_325 = (struct _Rep * const) D.76511_324;
  __a_326 = (struct allocator<char> &) &D.76510;
  __p_327 = &_S_empty_rep_storage;
  D.76549_328 = (struct _Rep *) __p_327;
  D.76537_329 = D.76549_328;
  D.76538_330 = D.76537_329 != this_325;
  D.76539_331 = __builtin_expect (D.76538_330, 0);
  retval.156_332 = D.76539_331 != 0;
  if (retval.156_332) goto <L49>; else goto <L126>;

<L0>:;
  save_filt.202_250 = <<<filter object>>>;
  save_eptr.201_251 = <<<exception object>>>;
  this_252 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
&D.68643;
  this_253 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_252;
  D.76459_254 = &D.76449;
  D.76460_255 = &this_253->_M_dataplus;
  D.76461_256 = (struct allocator<char> *) D.76460_255;
  this_257 = (struct allocator<char> * const) D.76459_254;
  __a_258 = (struct allocator<char> &) D.76461_256;
  __a.148_259 = (struct new_allocator<char> *) __a_258;
  this.149_260 = (struct new_allocator<char> *) this_257;
  this_261 = (struct new_allocator<char> * const) this.149_260;
  D.76464_262 = (struct new_allocator<char> &) __a.148_259;
  this_263 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_252;
  this_264 = this_263;
  D.76473_265 = this_264->_M_dataplus._M_p; 
  D.76469_266 = D.76473_265;
  D.76470_267 = (struct _Rep *) D.76469_266;
  D.76471_268 = D.76470_267 + -24B;
  D.76450_269 = D.76471_268;
  this_270 = (struct _Rep * const) D.76450_269;
  __a_271 = (struct allocator<char> &) &D.76449;
  __p_272 = &_S_empty_rep_storage;
  D.76488_273 = (struct _Rep *) __p_272;
  D.76476_274 = D.76488_273;
  D.76477_275 = D.76476_274 != this_270;
  D.76478_276 = __builtin_expect (D.76477_275, 0);
  retval.156_277 = D.76478_276 != 0; 
  if (retval.156_277) goto <L38>; else goto <L134>;

<L38>:;
  D.76482_286 = &this_270->D.16095._M_refcount;
  D.76483_287 = (volatile _Atomic_word *) D.76482_286;
  D.76484_288 = __exchange_and_add (D.76483_287, -1);

<bb 9>:
  retval.157_301 = D.76484_288 <= 0;
  if (retval.157_301) goto <L39>; else goto <L134>;

<L39>:;
  _M_destroy (this_270, __a_271);
  goto <bb 12> (<L134>);

<L34>:;
  save_filt.198_289 = <<<filter object>>>;
  save_eptr.197_290 = <<<exception object>>>;
  this.147_291 = (struct new_allocator<char> *) &D.76449;
  this_292 = (struct new_allocator<char> * const) this.147_291;
  <<<exception object>>> = save_eptr.197_290;
  <<<filter object>>> = save_filt.198_289;
  resx;

<L134>:;
  this.147_278 = (struct new_allocator<char> *) &D.76449;
  this_279 = (struct new_allocator<char> * const) this.147_278;
  D.76454_280 = &this_252->_M_dataplus;
  this_281 = (struct _Alloc_hider * const) D.76454_280;
  this.150_282 = (struct allocator<char> *) this_281;
  this_283 = (struct allocator<char> * const) this.150_282;
  this.147_284 = (struct new_allocator<char> *) this_283;
  this_285 = (struct new_allocator<char> * const) this.147_284;
  <<<exception object>>> = save_eptr.201_251;
  <<<filter object>>> = save_filt.202_250;
  resx;

<L36>:;
  save_filt.200_293 = <<<filter object>>>;
  save_eptr.199_294 = <<<exception object>>>;
  D.76454_295 = &this_252->_M_dataplus;
  this_296 = (struct _Alloc_hider * const) D.76454_295;
  this.150_297 = (struct allocator<char> *) this_296;
  this_298 = (struct allocator<char> * const) this.150_297;
  this.147_299 = (struct new_allocator<char> *) this_298;
  this_300 = (struct new_allocator<char> * const) this.147_299;
  <<<exception object>>> = save_eptr.199_294;
  <<<filter object>>> = save_filt.200_293;
  resx;

<L49>:;
  D.76543_395 = &this_325->D.16095._M_refcount;
  D.76544_396 = (volatile _Atomic_word *) D.76543_395;
  D.76545_397 = __exchange_and_add (D.76544_396, -1);

<bb 15>:
  retval.157_410 = D.76545_397 <= 0;
  if (retval.157_410) goto <L50>; else goto <L126>;

<L50>:;
  _M_destroy (this_325, __a_326);
  goto <bb 18> (<L126>);

<L45>:;
  save_filt.198_398 = <<<filter object>>>;
  save_eptr.197_399 = <<<exception object>>>;
  this.147_400 = (struct new_allocator<char> *) &D.76510;
  this_401 = (struct new_allocator<char> * const) this.147_400;
  <<<exception object>>> = save_eptr.197_399;
  <<<filter object>>> = save_filt.198_398;
  resx;

<L126>:;
  this.147_333 = (struct new_allocator<char> *) &D.76510;
  this_334 = (struct new_allocator<char> * const) this.147_333;
  D.76515_335 = &this_307->_M_dataplus;
  this_336 = (struct _Alloc_hider * const) D.76515_335;
  this.150_337 = (struct allocator<char> *) this_336;
  this_338 = (struct allocator<char> * const) this.150_337;
  this.147_339 = (struct new_allocator<char> *) this_338;
  this_340 = (struct new_allocator<char> * const) this.147_339;
  this.147_341 = (struct new_allocator<char> *) &D.68644;
  this_342 = (struct new_allocator<char> * const) this.147_341;
  this_343 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
&D.68639;
  this_344 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_343;
  D.76587_345 = &D.76577;
  D.76588_346 = &this_344->_M_dataplus;
  D.76589_347 = (struct allocator<char> *) D.76588_346;
  this_348 = (struct allocator<char> * const) D.76587_345;
  __a_349 = (struct allocator<char> &) D.76589_347;
  __a.148_350 = (struct new_allocator<char> *) __a_349;
  this.149_351 = (struct new_allocator<char> *) this_348;
  this_352 = (struct new_allocator<char> * const) this.149_351;
  D.76592_353 = (struct new_allocator<char> &) __a.148_350;
  this_354 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_343;
  this_355 = this_354;
  D.76601_356 = this_355->_M_dataplus._M_p;
  D.76597_357 = D.76601_356;
  D.76598_358 = (struct _Rep *) D.76597_357;
  D.76599_359 = D.76598_358 + -24B;
  D.76578_360 = D.76599_359;
  this_361 = (struct _Rep * const) D.76578_360;
  __a_362 = (struct allocator<char> &) &D.76577;
  __p_363 = &_S_empty_rep_storage;
  D.76616_364 = (struct _Rep *) __p_363;
  D.76604_365 = D.76616_364;
  D.76605_366 = D.76604_365 != this_361;
  D.76606_367 = __builtin_expect (D.76605_366, 0);
  retval.156_368 = D.76606_367 != 0; 
  if (retval.156_368) goto <L62>; else goto <L116>;

<L47>:;
  save_filt.200_402 = <<<filter object>>>; 
  save_eptr.199_403 = <<<exception object>>>;
  D.76515_404 = &this_307->_M_dataplus;
  this_405 = (struct _Alloc_hider * const) D.76515_404;
  this.150_406 = (struct allocator<char> *) this_405;
  this_407 = (struct allocator<char> * const) this.150_406;
  this.147_408 = (struct new_allocator<char> *) this_407;
  this_409 = (struct new_allocator<char> * const) this.147_408;
  <<<exception object>>> = save_eptr.199_403;
  <<<filter object>>> = save_filt.200_402;
  resx;

<L3>:;
  save_filt.204_244 = <<<filter object>>>;
  save_eptr.203_245 = <<<exception object>>>;
  this.147_246 = (struct new_allocator<char> *) &D.68644;
  this_247 = (struct new_allocator<char> * const) this.147_246;
  <<<exception object>>> = save_eptr.203_245;
  <<<filter object>>> = save_filt.204_244;
  resx;

<L62>:;
  D.76610_379 = &this_361->D.16095._M_refcount;
  D.76611_380 = (volatile _Atomic_word *) D.76610_379;
  D.76612_381 = __exchange_and_add (D.76611_380, -1);

<bb 22>:
  retval.157_394 = D.76612_381 <= 0;
  if (retval.157_394) goto <L63>; else goto <L116>;

<L63>:;
  _M_destroy (this_361, __a_362);
  goto <bb 25> (<L116>);

<L58>:;
  save_filt.198_382 = <<<filter object>>>;
  save_eptr.197_383 = <<<exception object>>>;
  this.147_384 = (struct new_allocator<char> *) &D.76577;
  this_385 = (struct new_allocator<char> * const) this.147_384;
  <<<exception object>>> = save_eptr.197_383;
  <<<filter object>>> = save_filt.198_382;
  resx;

<L116>:;
  this.147_369 = (struct new_allocator<char> *) &D.76577;
  this_370 = (struct new_allocator<char> * const) this.147_369;
  D.76582_371 = &this_343->_M_dataplus;
  this_372 = (struct _Alloc_hider * const) D.76582_371;
  this.150_373 = (struct allocator<char> *) this_372;
  this_374 = (struct allocator<char> * const) this.150_373;
  this.147_375 = (struct new_allocator<char> *) this_374;
  this_376 = (struct new_allocator<char> * const) this.147_375;
  this.147_377 = (struct new_allocator<char> *) &D.68640;
  this_378 = (struct new_allocator<char> * const) this.147_377;
  return;

<L60>:;
  save_filt.200_386 = <<<filter object>>>;
  save_eptr.199_387 = <<<exception object>>>;
  D.76582_388 = &this_343->_M_dataplus;
  this_389 = (struct _Alloc_hider * const) D.76582_388;
  this.150_390 = (struct allocator<char> *) this_389;
  this_391 = (struct allocator<char> * const) this.150_390;
  this.147_392 = (struct new_allocator<char> *) this_391;
  this_393 = (struct new_allocator<char> * const) this.147_392;
  <<<exception object>>> = save_eptr.199_387;
  <<<filter object>>> = save_filt.200_386;
  resx;

<L5>:;
  save_filt.206_178 = <<<filter object>>>;
  save_eptr.205_179 = <<<exception object>>>;
  this_180 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
&D.68639;
  this_181 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_180;
  D.76648_182 = &D.76638;
  D.76649_183 = &this_181->_M_dataplus;
  D.76650_184 = (struct allocator<char> *) D.76649_183;
  this_185 = (struct allocator<char> * const) D.76648_182;
  __a_186 = (struct allocator<char> &) D.76650_184;
  __a.148_187 = (struct new_allocator<char> *) __a_186;
  this.149_188 = (struct new_allocator<char> *) this_185;
  this_189 = (struct new_allocator<char> * const) this.149_188;
  D.76653_190 = (struct new_allocator<char> &) __a.148_187;
  this_191 = (struct
basic_string<char,std::char_traits<char>,std::allocator<char> > * const)
this_180; 
  this_192 = this_191;
  D.76662_193 = this_192->_M_dataplus._M_p;
  D.76658_194 = D.76662_193;
  D.76659_195 = (struct _Rep *) D.76658_194;
  D.76660_196 = D.76659_195 + -24B;
  D.76639_197 = D.76660_196;
  this_198 = (struct _Rep *   __a_199 = (struct allocator<char> &) &D.76638;
  __p_200 = &_S_empty_rep_storage;
  D.76677_201 = (struct _Rep *) __p_200;
  D.76665_202 = D.76677_201;
  D.76666_203 = D.76665_202 != this_198;
  D.76667_204 = __builtin_expect (D.76666_203, 0);
  retval.156_205 = D.76667_204 != 0;
  if (retval.156_205) goto <L73>; else goto <L109>;

<L73>:;
  D.76671_214 = &this_198->D.16095._M_refcount;
  D.76672_215 = (volatile _Atomic_word *) D.76671_214;
  D.76673_216 = __exchange_and_add (D.76672_215, -1);

<bb 29>:
  retval.157_229 = D.76673_216 <= 0;
  if (retval.157_229) goto <L74>; else goto <L109>;

<L74>:;
  _M_destroy (this_198, __a_199);
  goto <bb 32> (<L109>);

<L69>:;
  save_filt.198_217 = <<<filter object>>>;
  save_eptr.197_218 = <<<exception object>>>;
  this.147_219 = (struct new_allocator<char> *) &D.76638;
  this_220 = (struct new_allocator<char> * const) this.147_219;
  <<<exception object>>> = save_eptr.197_218;
  <<<filter object>>> = save_filt.198_217;
  resx;

<L109>:;
  this.147_206 = (struct new_allocator<char> *) &D.76638;
  this_207 = (struct new_allocator<char> * const) this.147_206;
  D.76643_208 = &this_180->_M_dataplus;
  this_209 = (struct _Alloc_hider * const) D.76643_208;
  this.150_210 = (struct allocator<char> *) this_209;
  this_211 = (struct allocator<char> * const) this.150_210;
  this.147_212 = (struct new_allocator<char> *) this_211;
  this_213 = (struct new_allocator<char> * const) this.147_212;
  <<<exception object>>> = save_eptr.205_179;
  <<<filter object>>> = save_filt.206_178;
  resx;

<L71>:;
  save_filt.200_221 = <<<filter object>>>;
  save_eptr.199_222 = <<<exception object>>>;
  D.76643_223 = &this_180->_M_dataplus;
  this_224 = (struct _Alloc_hider * const) D.76643_223;
  this.150_225 = (struct allocator<char> *) this_224;
  this_226 = (struct allocator<char> * const) this.150_225;
  this.147_227 = (struct new_allocator<char> *) this_226;
  this_228 = (struct new_allocator<char> * const) this.147_227;
  <<<exception object>>> = save_eptr.199_222;
  <<<filter object>>> = save_filt.200_221;
  resx;

<L8>:;
  save_filt.208_100 = <<<filter object>>>;
  save_eptr.207_101 = <<<exception object>>>;
  this.147_102 = (struct new_allocator<char> *) &D.68640;
  this_103 = (struct new_allocator<char> * const) this.147_102;
  <<<exception object>>> = save_eptr.207_101;
  resx;

<L10>:;
  save_filt.210_104 = <<<filter object>>>;
  save_eptr.209_105 = <<<exception object>>>;
  D.68638_106 = &this_1->others;
  this_107 = (struct map<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) D.68638_106;
  D.76705_108 = &this_107->_M_t;
  this_107 = (struct map<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) D.68638_106;
  D.76705_108 = &this_107->_M_t;
  this_109 = (struct _Rb_tree<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>,std::_Select1st<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >
>,std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > > * const) D.76705_108;
  this_110 = this_109;
  D.76713_111 = this_110->_M_impl._M_header._M_parent;
  D.76714_112 = (struct _Rb_tree_node<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > *) D.76713_111;
  D.76706_113 = D.76714_112;
  _M_erase (this_109, D.76706_113);
  goto <bb 37> (<L83>);

<L82>:;
  save_filt.236_168 = <<<filter object>>>;
  save_eptr.235_169 = <<<exception object>>>;
  D.76709_170 = &this_109->_M_impl;
  this_171 = (struct _Rb_tree_impl<std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,false> * const) D.76709_170;
  this.153_172 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_171;
  this_173 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_172;
  this.161_174 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_173;
  this_175 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.161_174;
  <<<exception object>>> = save_eptr.235_169;
  <<<filter object>>> = save_filt.236_168;
  resx;

<L83>:;
  D.76709_114 = &this_109->_M_impl;
  this_115 = (struct _Rb_tree_impl<std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,false> * const) D.76709_114;
  this.153_116 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_115;
  this.153_116 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_115;
  this_117 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_116;
  this.161_118 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_117;
  this_119 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.161_118;
  <<<exception object>>> = save_eptr.209_105;
  <<<filter object>>> = save_filt.210_104;
  resx;

<L13>:;
  save_filt.212_120 = <<<filter object>>>;
  save_eptr.211_121 = <<<exception object>>>;
  D.68637_122 = &this_1->iso639_2;
  this_123 = (struct map<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) D.68637_122;
  D.76730_124 = &this_123->_M_t;
  this_125 = (struct _Rb_tree<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>,std::_Select1st<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >
>,std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > > * const) D.76730_124;
  this_126 = this_125;
  D.76738_127 = this_126->_M_impl._M_header._M_parent;
  D.76739_128 = (struct _Rb_tree_node<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > *) D.76738_127;
  D.76731_129 = D.76739_128;
  _M_erase (this_125, D.76731_129);
  goto <bb 40> (<L88>); 

<L87>:;
  save_filt.236_160 = <<<filter object>>>;
  save_eptr.235_161 = <<<exception object>>>;
  D.76734_162 = &this_125->_M_impl;
  this_163 = (struct _Rb_tree_impl<std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,false> * const) D.76734_162;
  this.153_164 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_163;
  this_165 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_164;
  this_165 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_164;
  this.161_166 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_165;
  this_167 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.161_166;
  <<<exception object>>> = save_eptr.235_161;
  <<<filter object>>> = save_filt.236_160;
  resx;

<L88>:;
  D.76734_130 = &this_125->_M_impl;
  this_131 = (struct _Rb_tree_impl<std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,false> * const) D.76734_130;
  this.153_132 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_131;
  this_133 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_132;
  this.161_134 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_133;
  this_135 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.161_134;
  <<<exception object>>> = save_eptr.211_121;
  <<<filter object>>> = save_filt.212_120;
  resx;

<L16>:;
  save_filt.214_136 = <<<filter object>>>;
  save_eptr.213_137 = <<<exception object>>>;
  D.68636_138 = &this_1->iso639_1;
  this_139 = (struct map<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) D.68636_138;
  D.76755_140 = &this_139->_M_t;
  this_141 = (struct _Rb_tree<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >,std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>,std::_Select1st<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >
>,std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > > * const) D.76755_140;
  this_142 = this_141;
  D.76763_143 = this_142->_M_impl._M_header._M_parent;
  D.76764_144 = (struct _Rb_tree_node<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > *) D.76763_143;
  D.76756_145 = D.76764_144;
  _M_erase (this_141, D.76756_145);
  goto <bb 43> (<L93>);

<L92>:;
  save_filt.236_152 = <<<filter object>>>;
  save_eptr.235_153 = <<<exception object>>>;
  D.76759_154 = &this_141->_M_impl;
  this_155 = (struct _Rb_tree_impl<std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,false> * const) D.76759_154;
  this.153_156 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_155;
  this_157 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_156;
  this_157 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_156;
  this.161_158 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_157;
  this_159 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.161_158;
  <<<exception object>>> = save_eptr.235_153;
  <<<filter object>>> = save_filt.236_152;
  resx;

<L93>:;
  D.76759_146 = &this_141->_M_impl;
  this_147 = (struct _Rb_tree_impl<std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,false> * const) D.76759_146;
  this.153_148 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_147;
  this_149 = (struct allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.153_148;
  this.161_150 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *)
this_149;
  this_151 = (struct new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > *
const) this.161_150;
  <<<exception object>>> = save_eptr.213_137;
  <<<filter object>>> = save_filt.214_136;
  resx;

}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2006-01-20 15:50 ` rguenth at gcc dot gnu dot org
@ 2006-01-20 15:53 ` rguenth at gcc dot gnu dot org
  2006-01-20 15:55 ` pinskia at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-01-20 15:53 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from rguenth at gcc dot gnu dot org  2006-01-20 15:53 -------
And we can hope that the SSA inliner will do better on the temporaries, but I
guess the resulting CFG will be unchanged.  Penaltizing try/finally in
estimate_num_insn_1 instead of declaring them "/* Containers have no cost.  */"
will maybe make inlining sane here again (possibly conditional on
-fexceptions).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2006-01-20 15:53 ` rguenth at gcc dot gnu dot org
@ 2006-01-20 15:55 ` pinskia at gcc dot gnu dot org
  2006-01-20 15:57 ` pinskia at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-01-20 15:55 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from pinskia at gcc dot gnu dot org  2006-01-20 15:55 -------
The other thing which might help here is trying to find more functions which
can have nothrow on them which should help compile time.  I had a patch which
did this at the tree level but never finished it.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2006-01-20 15:55 ` pinskia at gcc dot gnu dot org
@ 2006-01-20 15:57 ` pinskia at gcc dot gnu dot org
  2006-01-20 17:19 ` steven at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-01-20 15:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from pinskia at gcc dot gnu dot org  2006-01-20 15:57 -------
Patch which might help:
http://gcc.gnu.org/ml/gcc-patches/2005-09/msg00881.html

It is not a complete patch.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2006-01-20 15:57 ` pinskia at gcc dot gnu dot org
@ 2006-01-20 17:19 ` steven at gcc dot gnu dot org
  2006-02-21 11:11 ` rguenth at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: steven at gcc dot gnu dot org @ 2006-01-20 17:19 UTC (permalink / raw)
  To: gcc-bugs



-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-01-20 17:19:33
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2006-01-20 17:19 ` steven at gcc dot gnu dot org
@ 2006-02-21 11:11 ` rguenth at gcc dot gnu dot org
  2006-10-18  9:18 ` rguenth at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-02-21 11:11 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from rguenth at gcc dot gnu dot org  2006-02-21 11:11 -------
Worst offenders are (--disable-checking mainline)

 cfg cleanup           :   2.30 ( 3%) usr   0.00 ( 0%) sys   2.36 ( 3%) wall   
1474 kB ( 0%) ggc
 integration           :   5.99 ( 7%) usr   0.29 (11%) sys   6.28 ( 7%) wall 
197009 kB (39%) ggc
 tree CFG cleanup      :   3.04 ( 4%) usr   0.03 ( 1%) sys   3.15 ( 4%) wall  
10852 kB ( 2%) ggc
 tree PTA              :   3.07 ( 4%) usr   0.06 ( 2%) sys   3.14 ( 4%) wall  
10492 kB ( 2%) ggc
 tree alias analysis   :   7.58 ( 9%) usr   0.19 ( 7%) sys   7.81 ( 9%) wall  
13190 kB ( 3%) ggc
 tree SSA incremental  :   3.41 ( 4%) usr   0.01 ( 0%) sys   3.37 ( 4%) wall   
2068 kB ( 0%) ggc
 tree operand scan     :   1.97 ( 2%) usr   0.18 ( 7%) sys   2.09 ( 2%) wall  
14274 kB ( 3%) ggc
 dominator optimization:   1.26 ( 2%) usr   0.04 ( 2%) sys   1.26 ( 2%) wall  
16471 kB ( 3%) ggc
 tree PRE              :   2.34 ( 3%) usr   0.08 ( 3%) sys   2.44 ( 3%) wall   
5784 kB ( 1%) ggc
 tree FRE              :   1.85 ( 2%) usr   0.24 ( 9%) sys   2.13 ( 3%) wall  
17853 kB ( 3%) ggc
 dominance frontiers   :   2.78 ( 3%) usr   0.00 ( 0%) sys   2.79 ( 3%) wall   
   0 kB ( 0%) ggc
 expand                :   3.94 ( 5%) usr   0.06 ( 2%) sys   4.05 ( 5%) wall  
41170 kB ( 8%) ggc
 CPROP 1               :   2.31 ( 3%) usr   0.01 ( 0%) sys   2.30 ( 3%) wall   
2020 kB ( 0%) ggc
 PRE                   :   7.39 ( 9%) usr   0.70 (26%) sys   8.09 (10%) wall   
 516 kB ( 0%) ggc
 CPROP 2               :   2.13 ( 3%) usr   0.01 ( 0%) sys   2.14 ( 3%) wall   
1402 kB ( 0%) ggc
 global alloc          :   1.84 ( 2%) usr   0.01 ( 0%) sys   1.86 ( 2%) wall   
8196 kB ( 2%) ggc
 TOTAL                 :  81.14             2.65            83.81            
510593 kB


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |compile-time-hog
   Last reconfirmed|2006-01-20 17:19:33         |2006-02-21 11:11:36
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug c++/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2006-02-21 11:11 ` rguenth at gcc dot gnu dot org
@ 2006-10-18  9:18 ` rguenth at gcc dot gnu dot org
  2008-01-03 15:56 ` [Bug middle-end/25878] " rguenth at gcc dot gnu dot org
  2008-01-03 16:25 ` rguenth at gcc dot gnu dot org
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-10-18  9:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from rguenth at gcc dot gnu dot org  2006-10-18 09:18 -------
Subject: Bug 25878

Author: rguenth
Date: Wed Oct 18 09:18:07 2006
New Revision: 117852

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117852
Log:
2006-10-18  Richard Guenther  <rguenther@suse.de>

        PR C++/25878
        Backport from mainline:
        2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>

        PR c++/27787
        * decl.c (make_typename_type): Only try and resolve it when
        context is not dependent.  Refactor.
        * decl2.c (check_classfn): Push to class scope before looking
        * for
        the function.

        * g++.dg/template/typename10.C: New.
        * g++.dg/template/lookup4.C: Remove bogus error marker.

Added:
    branches/gcc-4_1-branch/gcc/testsuite/g++.dg/template/typename10.C
      - copied unchanged from r116409,
trunk/gcc/testsuite/g++.dg/template/typename10.C
Modified:
    branches/gcc-4_1-branch/gcc/cp/ChangeLog
    branches/gcc-4_1-branch/gcc/cp/decl.c
    branches/gcc-4_1-branch/gcc/cp/decl2.c
    branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_1-branch/gcc/testsuite/g++.dg/template/lookup4.C


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug middle-end/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (10 preceding siblings ...)
  2006-10-18  9:18 ` rguenth at gcc dot gnu dot org
@ 2008-01-03 15:56 ` rguenth at gcc dot gnu dot org
  2008-01-03 16:25 ` rguenth at gcc dot gnu dot org
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-01-03 15:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from rguenth at gcc dot gnu dot org  2008-01-03 15:35 -------
Created an attachment (id=14866)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14866&action=view)
revised testcase

The problem persists with 4.2 if you remove the anonymous namespace around the
initializer function.  With 4.3 the testcase no longer builds.

Thus, a new testcase which is not preprocessed attached, observations still
apply.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #10688|0                           |1
        is obsolete|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug middle-end/25878] Excessive memory and compile-time with std::map init sequence
  2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
                   ` (11 preceding siblings ...)
  2008-01-03 15:56 ` [Bug middle-end/25878] " rguenth at gcc dot gnu dot org
@ 2008-01-03 16:25 ` rguenth at gcc dot gnu dot org
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-01-03 16:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from rguenth at gcc dot gnu dot org  2008-01-03 15:44 -------
On a second look, 4.3 behaves much better than 4.2 for this testcase, so I
consider it fixed.

3.3-hammer: 13s  321MB

4.1.3: 29s  588MB

4.2.2: 27s  440MB

4.3.0: 20s  188MB


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.3.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25878


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2008-01-03 15:45 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-20 15:21 [Bug c++/25878] New: Excessive memory and compile-time with std::map init sequence rguenth at gcc dot gnu dot org
2006-01-20 15:23 ` [Bug c++/25878] " rguenth at gcc dot gnu dot org
2006-01-20 15:26 ` rguenth at gcc dot gnu dot org
2006-01-20 15:37 ` pinskia at gcc dot gnu dot org
2006-01-20 15:48 ` pinskia at gcc dot gnu dot org
2006-01-20 15:50 ` rguenth at gcc dot gnu dot org
2006-01-20 15:53 ` rguenth at gcc dot gnu dot org
2006-01-20 15:55 ` pinskia at gcc dot gnu dot org
2006-01-20 15:57 ` pinskia at gcc dot gnu dot org
2006-01-20 17:19 ` steven at gcc dot gnu dot org
2006-02-21 11:11 ` rguenth at gcc dot gnu dot org
2006-10-18  9:18 ` rguenth at gcc dot gnu dot org
2008-01-03 15:56 ` [Bug middle-end/25878] " rguenth at gcc dot gnu dot org
2008-01-03 16:25 ` rguenth at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).