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).