From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id C04CE385840D; Tue, 2 Nov 2021 20:06:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C04CE385840D From: "marxin at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/103050] [12 Regression] 520.omnetpp_r miscompiled after r12-4787-gb8ef019ab938471f Date: Tue, 02 Nov 2021 20:06:35 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: marxin at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Nov 2021 20:06:35 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103050 --- Comment #8 from Martin Li=C5=A1ka --- So the only 2 transform happen here: (gdb) bt #0 gimple_call_retslot_flags (stmt=3D0x7ffff4543b40) at /home/marxin/Programming/gcc/gcc/gimple.c:1644 #1 0x0000000000ff6128 in handle_rhs_call (stmt=3D0x7ffff4543b40, results=3D0x7fffffffc750, implicit_eaf_flags=3D0, writes_global_memory=3D, reads_global_memory=3D) at /home/marxin/Programming/gcc/gcc/tree-ssa-structalias.c:4266 #2 0x0000000000ff9103 in find_func_aliases_for_call (t=3D, fn=3D) at /home/marxin/Programming/gcc/gcc/tree-ssa-structalias.c:4921 #3 find_func_aliases (fn=3D, origt=3D) at /home/marxin/Programming/gcc/gcc/tree-ssa-structalias.c:5024 #4 0x0000000000ffac9b in compute_points_to_sets () at /home/marxin/Programming/gcc/gcc/tree-ssa-structalias.c:7440 #5 compute_may_aliases () at /home/marxin/Programming/gcc/gcc/tree-ssa-structalias.c:7948 #6 0x0000000000cf2f2d in execute_function_todo (fn=3D0x7ffff7133f00, data=3D) at /home/marxin/Programming/gcc/gcc/passes.c:2014 #7 0x0000000000cf347c in execute_todo (flags=3D1572864) at /home/marxin/Programming/gcc/gcc/passes.c:2096 #8 0x0000000000cf60fe in execute_one_pass (pass=3D0x282cae0) at /home/marxin/Programming/gcc/gcc/passes.c:2560 #9 0x0000000000cf6a13 in execute_pass_list_1 (pass=3D0x282cae0) at /home/marxin/Programming/gcc/gcc/passes.c:2656 #10 0x0000000000cf6a25 in execute_pass_list_1 (pass=3D0x282ba00) at /home/marxin/Programming/gcc/gcc/passes.c:2657 #11 0x0000000000cf6a56 in execute_pass_list (fn=3D0x7ffff7133f00, pass=3D) at /home/marxin/Programming/gcc/gcc/passes.c:2667 #12 0x00000000009424f5 in cgraph_node::expand (this=3D0x7ffff730ddd0) at /home/marxin/Programming/gcc/gcc/context.h:48 #13 cgraph_node::expand (this=3D0x7ffff730ddd0) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:1781 #14 0x0000000000943b6f in expand_all_functions () at /home/marxin/Programming/gcc/gcc/cgraphunit.c:1992 #15 symbol_table::compile (this=3D0x7ffff765a000) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2356 #16 symbol_table::compile (this=3D0x7ffff765a000) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2267 #17 0x0000000000896c80 in lto_main () at /home/marxin/Programming/gcc/gcc/lto/lto.c:653 #18 0x0000000000ddcd24 in compile_file () at /home/marxin/Programming/gcc/gcc/toplev.c:452 #19 0x000000000086d91b in do_compile (no_backend=3Dfalse) at /home/marxin/Programming/gcc/gcc/toplev.c:2154 #20 toplev::main (this=3Dthis@entry=3D0x7fffffffccfe, argc=3D, argc@entry=3D198, argv=3D, argv@entry=3D0x7fffffffce48) at /home/marxin/Programming/gcc/gcc/toplev.c:2306 #21 0x0000000000870fd5 in main (argc=3D198, argv=3D0x7fffffffce48) at /home/marxin/Programming/gcc/gcc/main.c:39 (gdb) p debug_gimple_stmt(stmt) # .MEM_271 =3D VDEF <.MEM_270> D.31174 =3D opp_quotestr (name_22); [return slot optimization] (gdb) p debug_function(cfun->decl, 0) void recordScalar (struct cFileOutputScalarManager * const this, struct cComponent * component, const char * name, double value, struct opp_string_= map * attributes) { const char * s; const char * s; struct _Rb_tree_node_base * const it$_M_node; struct string D.31180; struct string D.31179; struct string D.31178; struct string D.31177; struct string D.31176; struct string D.31175; struct string D.31174; struct string D.31173; struct basic_string D.31172; struct basic_string D.31171; bool _1; struct FILE * _2; char _3; int (*__vtbl_ptr_type) () * _4; int (*__vtbl_ptr_type) () _5; int (*__vtbl_ptr_type) () * _6; int (*__vtbl_ptr_type) () _7; struct cConfigOption * _8; struct cObject * _9; int (*__vtbl_ptr_type) () * _11; int (*__vtbl_ptr_type) () _12; int _13; int (*__vtbl_ptr_type) () * _14; int (*__vtbl_ptr_type) () _15; int (*__vtbl_ptr_type) () * _16; int (*__vtbl_ptr_type) () _17; int (*__vtbl_ptr_type) () * _18; int (*__vtbl_ptr_type) () _19; struct FILE * _20; struct FILE * _21; const char * _23; bool _24; const char * _25; bool _26; bool _27; bool _28; bool _29; bool _30; const char * _31; bool _32; bool _33; const char * _34; bool _35; bool _36; char * _67; struct cConfiguration * _69; long unsigned int _74; bool _76; bool _81; long unsigned int _83; bool _86; char * _88; char * _90; char * _92; int _95; struct cEnvir * _102; char * _103; char * _104; char * _107; long unsigned int _108; long unsigned int _109; long unsigned int _110; long unsigned int _112; bool _114; char * _115; char * _116; long unsigned int _117; long unsigned int _119; int _121; void * _126; char * _127; void * _133; char * _134; long unsigned int _144; long unsigned int _145; char * _146; long unsigned int _147; long unsigned int _148; char * _149; long unsigned int _150; long unsigned int _151; char * _152; long unsigned int _153; long unsigned int _154; char * _155; const char * _156; struct _Rb_tree_node_base * _157; char * _158; char * _162; char * _165; char _167; char * _169; char * _171; long unsigned int _172; long unsigned int _173; char * _174; long unsigned int _175; long unsigned int _176; char * _177; const char * _178; struct _Rb_tree_node_base * _179; char * _181; long unsigned int _182; long unsigned int _183; char * _184; long unsigned int _185; long unsigned int _186; char * _187; long unsigned int _188; long unsigned int _189; char * _190; long unsigned int _191; long unsigned int _192; char * _193; long unsigned int _194; long unsigned int _195; char * _196; long unsigned int _197; long unsigned int _198; char * _199; long unsigned int _200; long unsigned int _201; char * _202; long unsigned int _203; long unsigned int _204; char * _205; long unsigned int _206; long unsigned int _207; char * _208; long unsigned int _209; long unsigned int _210; struct _Rb_tree_node_base * _239; bool _259; void * PROF_336; struct cConfiguration * _338; struct cConfiguration * _340; char * _344; const char[16] * _345; uint128_t _346; long unsigned int _347; long unsigned int _348; long unsigned int _350; char _351; struct basic_string & _352; bool _354; char _355; char * _356; const char[16] * _357; uint128_t _358; long unsigned int _359; long unsigned int _360; long unsigned int _361; long unsigned int _362; long unsigned int _363; struct basic_string & _364; bool _366; bool _367; char _369; unsigned char _370; int _371; int _372; int _373; bool _379; bool _380; char _381; unsigned char _382; int _383; int _384; int _385; char _416; bool _422; const char * _425; bool _426; const char * _427; bool _428; [local count: 624228568]: _1 =3D this_64(D)->run.initialized; if (_1 !=3D 0) goto ; [67.00%] else goto ; [33.00%] [local count: 205995424]: init (this_64(D)); [local count: 624228568]: _2 =3D this_64(D)->f; if (_2 =3D=3D 0B) goto ; [18.09%] else goto ; [81.91%] [local count: 511305619]: if (name_66(D) =3D=3D 0B) goto ; [30.00%] else goto ; [70.00%] [local count: 357913935]: _3 =3D *name_66(D); if (_3 =3D=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 332348652]: [local count: 511305619]: # name_22 =3D PHI _102 =3D evPtr; _4 =3D _102->_vptr.cEnvir; _5 =3D MEM[(int (*__vtbl_ptr_type) () *)_4 + 248B]; PROF_336 =3D [obj_type_ref] OBJ_TYPE_REF(_5;(struct cEnvir)_102->31); if (PROF_336 =3D=3D getConfig) goto ; [80.00%] else goto ; [20.00%] [local count: 409044496]: _340 =3D MEM[(struct EnvirBase *)_102].cfg; goto ; [100.00%] [local count: 102261128]: _338 =3D OBJ_TYPE_REF(_5;(struct cEnvir)_102->31) (_102); [local count: 511305619]: # _69 =3D PHI <_338(10), _340(9)> _6 =3D _69->D.4955._vptr.cObject; _7 =3D MEM[(int (*__vtbl_ptr_type) () *)_6 + 264B]; _8 =3D CFGID_SCALAR_RECORDING; _9 =3D &component_70(D)->D.5106.D.5083.D.4983.D.4767.D.4758; _11 =3D component_70(D)->D.5106.D.5083.D.4983.D.4767.D.4758._vptr.cObject; _12 =3D MEM[(int (*__vtbl_ptr_type) () *)_11 + 64B]; D.31173 =3D OBJ_TYPE_REF(_12;(struct cObject)_9->8) (_9); [return slot optimization] _350 =3D D.31173._M_string_length; if (_350 =3D=3D 4611686018427387903) goto ; [0.04%] else goto ; [99.96%] [local count: 204523]: __throw_length_error ("basic_string::append"); [local count: 511101096]: _352 =3D _M_append (&D.31173, ".", 1); [local count: 511101096]: MEM[(struct _Alloc_hider *)&D.31172]._M_p =3D &MEM [(void *)&D= .31172 + 16B]; _344 =3D MEM[(const struct basic_string *)_352]._M_dataplus._M_p; _345 =3D &MEM[(const struct basic_string *)_352].D.4725._M_local_buf; if (_344 =3D=3D _345) goto ; [30.00%] else goto ; [70.00%] [local count: 153330329]: _346 =3D MEM [(char * {ref-all})_352 + 16B]; MEM [(char * {ref-all})&D.31172 + 16B] =3D _346; goto ; [100.00%] [local count: 357770767]: D.31172._M_dataplus._M_p =3D _344; _347 =3D *_352.D.4725._M_allocated_capacity; D.31172.D.4725._M_allocated_capacity =3D _347; [local count: 511101096]: _348 =3D MEM[(const struct basic_string *)_352]._M_string_length; D.31172._M_string_length =3D _348; *_352._M_dataplus._M_p =3D _345; *_352._M_string_length =3D 0; MEM[(char_type &)_352 + 16] =3D 0; _361 =3D __builtin_strlen (name_22); _362 =3D D.31172._M_string_length; _363 =3D 4611686018427387903 - _362; if (_361 > _363) goto ; [0.04%] else goto ; [99.96%] [local count: 204439]: __throw_length_error ("basic_string::append"); [local count: 510896657]: _364 =3D _M_append (&D.31172, name_22, _361); [local count: 510896657]: MEM[(struct _Alloc_hider *)&D.31171]._M_p =3D &MEM [(void *)&D= .31171 + 16B]; _356 =3D MEM[(const struct basic_string *)_364]._M_dataplus._M_p; _357 =3D &MEM[(const struct basic_string *)_364].D.4725._M_local_buf; if (_356 =3D=3D _357) goto ; [30.00%] else goto ; [70.00%] [local count: 153268996]: _358 =3D MEM [(char * {ref-all})_364 + 16B]; MEM [(char * {ref-all})&D.31171 + 16B] =3D _358; goto ; [100.00%] [local count: 357627661]: D.31171._M_dataplus._M_p =3D _356; _359 =3D *_364.D.4725._M_allocated_capacity; D.31171.D.4725._M_allocated_capacity =3D _359; [local count: 510896657]: _360 =3D MEM[(const struct basic_string *)_364]._M_string_length; D.31171._M_string_length =3D _360; *_364._M_dataplus._M_p =3D _357; *_364._M_string_length =3D 0; MEM[(char_type &)_364 + 16] =3D 0; _127 =3D D.31171._M_dataplus._M_p; _76 =3D OBJ_TYPE_REF(_7;(struct cConfiguration)_69->33) (_69, _127, _8, 0= ); [local count: 510896657]: _107 =3D D.31171._M_dataplus._M_p; if (&D.31171.D.4725._M_local_buf !=3D _107) goto ; [53.47%] else goto ; [46.53%] [local count: 273176442]: _110 =3D D.31171.D.4725._M_allocated_capacity; _109 =3D _110 + 1; operator delete (_107, _109); [local count: 510896657]: D.31171 =3D{v} {CLOBBER}; D.31171 =3D{v} {CLOBBER}; _116 =3D D.31172._M_dataplus._M_p; if (&D.31172.D.4725._M_local_buf !=3D _116) goto ; [53.47%] else goto ; [46.53%] [local count: 273176442]: _112 =3D D.31172.D.4725._M_allocated_capacity; _108 =3D _112 + 1; operator delete (_116, _108); [local count: 510896657]: D.31172 =3D{v} {CLOBBER}; D.31172 =3D{v} {CLOBBER}; _115 =3D D.31173._M_dataplus._M_p; if (&D.31173.D.4725._M_local_buf !=3D _115) goto ; [53.47%] else goto ; [46.53%] [local count: 273176442]: _119 =3D D.31173.D.4725._M_allocated_capacity; _117 =3D _119 + 1; operator delete (_115, _117); [local count: 510896657]: D.31173 =3D{v} {CLOBBER}; D.31173 =3D{v} {CLOBBER}; if (_76 !=3D 0) goto ; [33.00%] else goto ; [67.00%] [local count: 168595896]: _13 =3D this_64(D)->prec; _81 =3D opp_needsquotes (name_22); if (_81 !=3D 0) goto ; [33.00%] else goto ; [67.00%] [local count: 55636644]: D.31174 =3D opp_quotestr (name_22); [return slot optimization] _104 =3D D.31174._M_dataplus._M_p; [local count: 168595896]: # _23 =3D PHI # _24 =3D PHI <0(31), 1(32)> _14 =3D component_70(D)->D.5106.D.5083.D.4983.D.4767.D.4758._vptr.cObject; _15 =3D MEM[(int (*__vtbl_ptr_type) () *)_14 + 64B]; D.31175 =3D OBJ_TYPE_REF(_15;(struct cObject)_9->8) (_9); [return slot optimization] [local count: 168595896]: _103 =3D D.31175._M_dataplus._M_p; _86 =3D opp_needsquotes (_103); if (_86 !=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 84297948]: _16 =3D component_70(D)->D.5106.D.5083.D.4983.D.4767.D.4758._vptr.cObject; _17 =3D MEM[(int (*__vtbl_ptr_type) () *)_16 + 64B]; D.31177 =3D OBJ_TYPE_REF(_17;(struct cObject)_9->8) (_9); [return slot optimization] [local count: 84297948]: _134 =3D D.31177._M_dataplus._M_p; D.31176 =3D opp_quotestr (_134); [return slot optimization] [local count: 84297948]: _88 =3D D.31176._M_dataplus._M_p; goto ; [100.00%] [local count: 84297948]: _18 =3D component_70(D)->D.5106.D.5083.D.4983.D.4767.D.4758._vptr.cObject; _19 =3D MEM[(int (*__vtbl_ptr_type) () *)_18 + 64B]; D.31178 =3D OBJ_TYPE_REF(_19;(struct cObject)_9->8) (_9); [return slot optimization] [local count: 84297948]: _92 =3D D.31178._M_dataplus._M_p; [local count: 168595896]: # _25 =3D PHI <_88(37), _92(39)> # _26 =3D PHI <1(37), 0(39)> # _29 =3D PHI <0(37), 1(39)> _20 =3D this_64(D)->f; _95 =3D fprintf (_20, "scalar %s \t%s \t%.*g\n", _25, _23, _13, value_93(= D)); [local count: 168595896]: if (_29 !=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 84297948]: _90 =3D D.31178._M_dataplus._M_p; if (&D.31178.D.4725._M_local_buf !=3D _90) goto ; [53.47%] else goto ; [46.53%] [local count: 45074110]: _83 =3D D.31178.D.4725._M_allocated_capacity; _74 =3D _83 + 1; operator delete (_90, _74); [local count: 84297948]: D.31178 =3D{v} {CLOBBER}; [local count: 168595896]: D.31178 =3D{v} {CLOBBER}; if (_26 !=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 84297948]: D.31176 =3D{v} {CLOBBER}; goto ; [100.00%] [local count: 84297948]: _67 =3D D.31176._M_dataplus._M_p; if (&D.31176.D.4725._M_local_buf !=3D _67) goto ; [53.47%] else goto ; [46.53%] [local count: 45074110]: _144 =3D D.31176.D.4725._M_allocated_capacity; _145 =3D _144 + 1; operator delete (_67, _145); [local count: 84297948]: D.31176 =3D{v} {CLOBBER}; D.31176 =3D{v} {CLOBBER}; _146 =3D D.31177._M_dataplus._M_p; if (&D.31177.D.4725._M_local_buf !=3D _146) goto ; [53.47%] else goto ; [46.53%] [local count: 45074110]: _147 =3D D.31177.D.4725._M_allocated_capacity; _148 =3D _147 + 1; operator delete (_146, _148); [local count: 84297948]: D.31177 =3D{v} {CLOBBER}; [local count: 168595896]: D.31177 =3D{v} {CLOBBER}; _149 =3D D.31175._M_dataplus._M_p; if (&D.31175.D.4725._M_local_buf !=3D _149) goto ; [53.47%] else goto ; [46.53%] [local count: 90148226]: _150 =3D D.31175.D.4725._M_allocated_capacity; _151 =3D _150 + 1; operator delete (_149, _151); [local count: 168595896]: D.31175 =3D{v} {CLOBBER}; D.31175 =3D{v} {CLOBBER}; if (_24 !=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 84297948]: _152 =3D D.31174._M_dataplus._M_p; if (&D.31174.D.4725._M_local_buf !=3D _152) goto ; [53.47%] else goto ; [46.53%] [local count: 45074110]: _153 =3D D.31174.D.4725._M_allocated_capacity; _154 =3D _153 + 1; operator delete (_152, _154); [local count: 84297948]: D.31174 =3D{v} {CLOBBER}; [local count: 168595896]: D.31174 =3D{v} {CLOBBER}; if (_95 < 0) goto ; [0.00%] else goto ; [100.00%] [count: 0]: _133 =3D __cxa_allocate_exception (128); _155 =3D MEM[(const struct opp_string *)this_64(D) + 120B].str; if (_155 !=3D 0B) goto ; [0.00%] else goto ; [0.00%] [count: 0]: [count: 0]: # _156 =3D PHI <""(60), _155(59)> __ct_comp (_133, "Cannot write output scalar file `%s\'", _156); [count: 0]: __cxa_throw (_133, &_ZTI13cRuntimeError, __dt_comp ); [local count: 168595896]: if (attributes_101(D) !=3D 0B) goto ; [70.00%] else goto ; [30.00%] [local count: 118017131]: _157 =3D MEM[(struct _Rb_tree *)attributes_101(D)]._M_impl.D.5999._M_header._M_left; _239 =3D &MEM[(struct _Rb_tree *)attributes_101(D)]._M_impl.D.5999._M_hea= der; if (_157 !=3D _239) goto ; [89.00%] else goto ; [11.00%] [local count: 105035247]: [local count: 954866036]: # it$_M_node_246 =3D PHI <_179(153), _157(152)> _158 =3D MEM[(const struct opp_string *)it$_M_node_246 + 40B].str; if (_158 !=3D 0B) goto ; [70.00%] else goto ; [30.00%] [local count: 668406230]: _416 =3D MEM[(const char *)_158]; if (_416 =3D=3D 0) goto ; [34.00%] else goto ; [66.00%] [local count: 441148109]: [local count: 5855175980]: # _351 =3D PHI <_369(155), _416(67)> # s_349 =3D PHI _370 =3D (unsigned char) _351; _371 =3D (int) _370; _372 =3D isspace (_371); _114 =3D _351 =3D=3D 92; _380 =3D _372 !=3D 0; _426 =3D _114 | _380; _366 =3D _351 =3D=3D 34; _354 =3D _366 | _426; if (_354 !=3D 0) goto ; [6.46%] else goto ; [93.54%] [local count: 5477173733]: _373 =3D iscntrl (_371); if (_373 !=3D 0) goto ; [2.20%] else goto ; [97.80%] [local count: 5545739396]: s_375 =3D s_349 + 1; _369 =3D *s_375; if (_369 !=3D 0) goto ; [97.80%] else goto ; [2.20%] [local count: 5423733130]: goto ; [100.00%] [local count: 620506333]: # _367 =3D PHI <1(69), 0(70), 1(68)> if (_367 !=3D 0) goto ; [50.79%] else goto ; [49.21%] [local count: 477433021]: # _425 =3D PHI <_158(71), _158(66), ""(65)> D.31179 =3D opp_quotestr (_425); [return slot optimization] [local count: 477433021]: _162 =3D D.31179._M_dataplus._M_p; [local count: 954866047]: # _31 =3D PHI <_162(73), _158(71)> # _32 =3D PHI <1(73), 0(71)> _165 =3D MEM[(const struct opp_string *)it$_M_node_246 + 32B].str; if (_165 !=3D 0B) goto ; [70.00%] else goto ; [30.00%] [local count: 668406236]: _355 =3D MEM[(const char *)_165]; if (_355 =3D=3D 0) goto ; [34.00%] else goto ; [66.00%] [local count: 441148113]: [local count: 5855176046]: # _167 =3D PHI <_381(154), _355(76)> # s_463 =3D PHI _382 =3D (unsigned char) _167; _383 =3D (int) _382; _384 =3D isspace (_383); _428 =3D _167 =3D=3D 92; _259 =3D _384 !=3D 0; _27 =3D _259 | _428; _28 =3D _167 =3D=3D 34; _30 =3D _27 | _28; if (_30 !=3D 0) goto ; [6.46%] else goto ; [93.54%] [local count: 5477173800]: _385 =3D iscntrl (_383); if (_385 !=3D 0) goto ; [2.20%] else goto ; [97.80%] [local count: 5545739454]: s_387 =3D s_463 + 1; _381 =3D *s_387; if (_381 !=3D 0) goto ; [97.80%] else goto ; [2.20%] [local count: 5423733187]: goto ; [100.00%] [local count: 620506340]: # _379 =3D PHI <1(78), 0(79), 1(77)> if (_379 !=3D 0) goto ; [50.79%] else goto ; [49.21%] [local count: 477433026]: # _427 =3D PHI <_165(80), _165(75), ""(74)> D.31180 =3D opp_quotestr (_427); [return slot optimization] [local count: 477433026]: _169 =3D D.31180._M_dataplus._M_p; [local count: 954866058]: # _34 =3D PHI <_169(82), _165(80)> # _35 =3D PHI <1(82), 0(80)> _21 =3D this_64(D)->f; _121 =3D fprintf (_21, "attr %s %s\n", _34, _31); [local count: 954866058]: if (_35 !=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 477433026]: _171 =3D D.31180._M_dataplus._M_p; if (&D.31180.D.4725._M_local_buf !=3D _171) goto ; [53.47%] else goto ; [46.53%] [local count: 255283437]: _172 =3D D.31180.D.4725._M_allocated_capacity; _173 =3D _172 + 1; operator delete (_171, _173); [local count: 477433026]: D.31180 =3D{v} {CLOBBER}; [local count: 954866058]: D.31180 =3D{v} {CLOBBER}; if (_32 !=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 477433026]: _174 =3D D.31179._M_dataplus._M_p; if (&D.31179.D.4725._M_local_buf !=3D _174) goto ; [53.47%] else goto ; [46.53%] [local count: 255283437]: _175 =3D D.31179.D.4725._M_allocated_capacity; _176 =3D _175 + 1; operator delete (_174, _176); [local count: 477433026]: D.31179 =3D{v} {CLOBBER}; [local count: 954866058]: D.31179 =3D{v} {CLOBBER}; if (_121 < 0) goto ; [0.00%] else goto ; [100.00%] [count: 0]: _126 =3D __cxa_allocate_exception (128); _177 =3D MEM[(const struct opp_string *)this_64(D) + 120B].str; if (_177 !=3D 0B) goto ; [0.00%] else goto ; [0.00%] [count: 0]: [count: 0]: # _178 =3D PHI <""(94), _177(93)> __ct_comp (_126, "Cannot write output scalar file `%s\'", _178); [count: 0]: __cxa_throw (_126, &_ZTI13cRuntimeError, __dt_comp ); [local count: 954866058]: _179 =3D _Rb_tree_increment (it$_M_node_246); if (_179 !=3D _239) goto ; [89.00%] else goto ; [11.00%] [local count: 849830792]: goto ; [100.00%] [local count: 623819628]: return; [count: 0]: : _181 =3D D.31171._M_dataplus._M_p; if (&D.31171.D.4725._M_local_buf !=3D _181) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _182 =3D D.31171.D.4725._M_allocated_capacity; _183 =3D _182 + 1; operator delete (_181, _183); [count: 0]: D.31171 =3D{v} {CLOBBER}; resx 6 [count: 0]: : D.31171 =3D{v} {CLOBBER}; _184 =3D D.31172._M_dataplus._M_p; if (&D.31172.D.4725._M_local_buf !=3D _184) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _185 =3D D.31172.D.4725._M_allocated_capacity; _186 =3D _185 + 1; operator delete (_184, _186); [count: 0]: D.31172 =3D{v} {CLOBBER}; resx 4 [count: 0]: : D.31172 =3D{v} {CLOBBER}; _187 =3D D.31173._M_dataplus._M_p; if (&D.31173.D.4725._M_local_buf !=3D _187) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _188 =3D D.31173.D.4725._M_allocated_capacity; _189 =3D _188 + 1; operator delete (_187, _189); [count: 0]: D.31173 =3D{v} {CLOBBER}; resx 2 [count: 0]: : resx 22 [count: 0]: : D.31178 =3D{v} {CLOBBER}; resx 20 [count: 0]: : D.31176 =3D{v} {CLOBBER}; goto ; [100.00%] [count: 0]: : resx 22 [count: 0]: : D.31178 =3D{v} {CLOBBER}; resx 20 [count: 0]: : D.31176 =3D{v} {CLOBBER}; goto ; [100.00%] [count: 0]: : resx 22 [count: 0]: : D.31178 =3D{v} {CLOBBER}; resx 20 [count: 0]: : D.31176 =3D{v} {CLOBBER}; goto ; [100.00%] [count: 0]: : if (_29 !=3D 0) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _190 =3D D.31178._M_dataplus._M_p; if (&D.31178.D.4725._M_local_buf !=3D _190) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _191 =3D D.31178.D.4725._M_allocated_capacity; _192 =3D _191 + 1; operator delete (_190, _192); [count: 0]: D.31178 =3D{v} {CLOBBER}; [count: 0]: resx 22 [count: 0]: : D.31178 =3D{v} {CLOBBER}; if (_26 !=3D 0) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _193 =3D D.31176._M_dataplus._M_p; if (&D.31176.D.4725._M_local_buf !=3D _193) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _194 =3D D.31176.D.4725._M_allocated_capacity; _195 =3D _194 + 1; operator delete (_193, _195); [count: 0]: D.31176 =3D{v} {CLOBBER}; [count: 0]: # _422 =3D PHI <_26(122), 1(125)> resx 20 [count: 0]: : D.31176 =3D{v} {CLOBBER}; if (_422 !=3D 0) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _196 =3D D.31177._M_dataplus._M_p; if (&D.31177.D.4725._M_local_buf !=3D _196) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _197 =3D D.31177.D.4725._M_allocated_capacity; _198 =3D _197 + 1; operator delete (_196, _198); [count: 0]: D.31177 =3D{v} {CLOBBER}; [count: 0]: resx 18 [count: 0]: : D.31177 =3D{v} {CLOBBER}; _199 =3D D.31175._M_dataplus._M_p; if (&D.31175.D.4725._M_local_buf !=3D _199) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _200 =3D D.31175.D.4725._M_allocated_capacity; _201 =3D _200 + 1; operator delete (_199, _201); [count: 0]: D.31175 =3D{v} {CLOBBER}; resx 16 [count: 0]: : D.31175 =3D{v} {CLOBBER}; if (_24 !=3D 0) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _202 =3D D.31174._M_dataplus._M_p; if (&D.31174.D.4725._M_local_buf !=3D _202) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _203 =3D D.31174.D.4725._M_allocated_capacity; _204 =3D _203 + 1; operator delete (_202, _204); [count: 0]: D.31174 =3D{v} {CLOBBER}; [count: 0]: : resx 14 [count: 0]: : __cxa_free_exception (_133); resx 33 [count: 0]: # _36 =3D PHI <0(81), _35(83)> : if (_36 !=3D 0) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _205 =3D D.31180._M_dataplus._M_p; if (&D.31180.D.4725._M_local_buf !=3D _205) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _206 =3D D.31180.D.4725._M_allocated_capacity; _207 =3D _206 + 1; operator delete (_205, _207); [count: 0]: D.31180 =3D{v} {CLOBBER}; [count: 0]: resx 39 [count: 0]: # _33 =3D PHI <0(72), _32(145)> : D.31180 =3D{v} {CLOBBER}; if (_33 !=3D 0) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _208 =3D D.31179._M_dataplus._M_p; if (&D.31179.D.4725._M_local_buf !=3D _208) goto ; [0.00%] else goto ; [0.00%] [count: 0]: _209 =3D D.31179.D.4725._M_allocated_capacity; _210 =3D _209 + 1; operator delete (_208, _210); [count: 0]: D.31179 =3D{v} {CLOBBER}; [count: 0]: resx 37 [count: 0]: : __cxa_free_exception (_126); resx 44 } and here: (gdb) bt #0 gimple_call_arg_flags (stmt=3D0x7ffff574dd10, arg=3D2) at /home/marxin/Programming/gcc/gcc/gimple.c:1610 #1 0x0000000000b9883b in analyze_ssa_name_flags (name=3D0x7ffff5d38d80, lattice=3D..., depth=3D3, ipa=3Dfalse) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:1825 #2 0x0000000000b98bd5 in analyze_ssa_name_flags (name=3D0x7ffff5d38c60, lattice=3D..., depth=3D2, ipa=3Dfalse) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:1933 #3 0x0000000000b98ddb in analyze_ssa_name_flags (name=3D0x7ffff57cdc60, lattice=3D..., depth=3D1, ipa=3Dfalse) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:1940 #4 0x0000000000b98fc7 in merge_call_lhs_flags (call=3D, arg=3D, index=3D, deref=3D, la= ttice=3D..., depth=3D0, ipa=3Dfalse) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:16= 84 #5 0x0000000000b98829 in merge_call_lhs_flags (ipa=3D, depth=3D, lattice=3D..., deref=3D, index=3D, arg=3D, call=3D) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:1838 #6 analyze_ssa_name_flags (name=3D0x7ffff57cd750, lattice=3D..., depth=3D0, ipa=3Dfalse) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:1859 #7 0x0000000000b9de6e in analyze_parms (ipa=3D, summary_lto= =3D0x0, summary=3D0x7ffff6eed9c0) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:= 2051 #8 analyze_function (f=3D, ipa=3D) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:2227 #9 0x0000000000b9fa02 in (anonymous namespace)::pass_modref::execute (this=3D, f=3D) at /home/marxin/Programming/gcc/gcc/ipa-modref.c:3087 #10 0x0000000000cf611a in execute_one_pass (pass=3D0x282e820) at /home/marxin/Programming/gcc/gcc/passes.c:2567 #11 0x0000000000cf6a13 in execute_pass_list_1 (pass=3D0x282e820) at /home/marxin/Programming/gcc/gcc/passes.c:2656 #12 0x0000000000cf6a25 in execute_pass_list_1 (pass=3D0x282ba00) at /home/marxin/Programming/gcc/gcc/passes.c:2657 #13 0x0000000000cf6a56 in execute_pass_list (fn=3D0x7ffff71339c0, pass=3D) at /home/marxin/Programming/gcc/gcc/passes.c:2667 #14 0x00000000009424f5 in cgraph_node::expand (this=3D0x7ffff6f58880) at /home/marxin/Programming/gcc/gcc/context.h:48 #15 cgraph_node::expand (this=3D0x7ffff6f58880) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:1781 #16 0x0000000000943b6f in expand_all_functions () at /home/marxin/Programming/gcc/gcc/cgraphunit.c:1992 #17 symbol_table::compile (this=3D0x7ffff765a000) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2356 #18 symbol_table::compile (this=3D0x7ffff765a000) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2267 #19 0x0000000000896c80 in lto_main () at /home/marxin/Programming/gcc/gcc/lto/lto.c:653 #20 0x0000000000ddcd24 in compile_file () at /home/marxin/Programming/gcc/gcc/toplev.c:452 #21 0x000000000086d91b in do_compile (no_backend=3Dfalse) at /home/marxin/Programming/gcc/gcc/toplev.c:2154 #22 toplev::main (this=3Dthis@entry=3D0x7fffffffccfe, argc=3D, argc@entry=3D198, argv=3D, argv@entry=3D0x7fffffffce48) at /home/marxin/Programming/gcc/gcc/toplev.c:2306 #23 0x0000000000870fd5 in main (argc=3D198, argv=3D0x7fffffffce48) at /home/marxin/Programming/gcc/gcc/main.c:39 (gdb) p debug_gimple_stmt(stmt) # .MEM_110 =3D VDEF <.MEM_68> _M_construct.constprop (_30(D), s_88, _92); __attribute__((abi_tag ("cxx11"))) struct string getAsString (struct cConfiguration * const this, const char * objectFullPath, struct cConfigOption * option, const char * fallbackValue) { long int D.32273; const char * s; int (*__vtbl_ptr_type) () * _1; int (*__vtbl_ptr_type) () _2; int (*__vtbl_ptr_type) () * _3; int (*__vtbl_ptr_type) () _4; struct cNamedObject * _5; int (*__vtbl_ptr_type) () * _6; int (*__vtbl_ptr_type) () _7; void * _8; int (*__vtbl_ptr_type) () * _9; int (*__vtbl_ptr_type) () _10; const char * _11; struct cNamedObject * _12; int (*__vtbl_ptr_type) () * _13; int (*__vtbl_ptr_type) () _14; long unsigned int _22; const char * _24; const char * _26; const char * _29; struct string & _30(D); struct exception * _34; void * _36; const char * _39; char * _44; const char * _45; void * PROF_63; const char * _65; void * PROF_67; const char * _69; const char * _71; int (*__vtbl_ptr_type) () * _73; int (*__vtbl_ptr_type) () _74; const struct KeyValue2 & _75; const struct KeyValue1 * _76; int (*__vtbl_ptr_type) () * _77; int (*__vtbl_ptr_type) () _78; const char * _79; char * _80; void * PROF_82; const char * _84; char * _86; char _89; long unsigned int _91; const char * _92; char[16] * _99; long int _113; [local count: 1073741824]: assertType (option_19(D), 1, 3); _1 =3D this_21(D)->D.4954._vptr.cObject; _2 =3D MEM[(int (*__vtbl_ptr_type) () *)_1 + 152B]; _22 =3D MEM[(const struct basic_string *)option_19(D) + 80B]._M_string_le= ngth; if (_22 =3D=3D 0) goto ; [29.00%] else goto ; [71.00%] [local count: 311385128]: goto ; [100.00%] [local count: 762356697]: _44 =3D MEM[(const struct basic_string *)option_19(D) + 80B]._M_dataplus.= _M_p; [local count: 1073741824]: # _45 =3D PHI <0B(43), _44(3)> _24 =3D OBJ_TYPE_REF(_2;(struct cConfiguration)this_21(D)->19) (this_21(D= ), _45); [local count: 1073741824]: _3 =3D this_21(D)->D.4954._vptr.cObject; _4 =3D MEM[(int (*__vtbl_ptr_type) () *)_3 + 176B]; _5 =3D &option_19(D)->D.5508.D.4983.D.4767; _6 =3D option_19(D)->D.5508.D.4983.D.4767.D.4758._vptr.cObject; _7 =3D MEM[(int (*__vtbl_ptr_type) () *)_6 + 48B]; PROF_63 =3D [obj_type_ref] OBJ_TYPE_REF(_7;(struct cNamedObject)_5->6); if (PROF_63 =3D=3D getName) goto ; [80.00%] else goto ; [20.00%] [local count: 858993457]: _71 =3D MEM[(const struct cNamedObject *)option_19(D)].namep; if (_71 !=3D 0B) goto ; [70.00%] else goto ; [30.00%] [local count: 601295422]: goto ; [100.00%] [local count: 214748368]: _65 =3D OBJ_TYPE_REF(_7;(struct cNamedObject)_5->6) (_5); [local count: 214748368]: goto ; [100.00%] [count: 0]: : goto ; [100.00%] [local count: 257698035]: [local count: 1073741824]: # _26 =3D PHI <_65(45), _71(44), ""(9)> PROF_67 =3D [obj_type_ref] OBJ_TYPE_REF(_4;(struct cConfiguration)this_21(D)->22); if (PROF_67 =3D=3D getPerObjectConfigValue) goto ; [80.00%] else goto ; [20.00%] [local count: 858993457]: _73 =3D MEM[(const struct SectionBasedConfiguration *)this_21(D)].D.5740.D.4958.D.4955._vptr.cObject; _74 =3D MEM[(int (*__vtbl_ptr_type) () *)_73 + 184B]; _75 =3D OBJ_TYPE_REF(_74;(struct SectionBasedConfiguration)this_21(D)->23) (this_21(D), objectFullPath_27(D), _26); goto ; [100.00%] [count: 0]: : goto ; [100.00%] [local count: 858993457]: _76 =3D &_75->D.10348; _77 =3D _75->D.10348.D.5862._vptr.KeyValue; _78 =3D MEM[(int (*__vtbl_ptr_type) () *)_77 + 16B]; PROF_82 =3D [obj_type_ref] OBJ_TYPE_REF(_78;(struct KeyValue1)_76->2); if (PROF_82 =3D=3D what) goto ; [80.00%] else goto ; [20.00%] [local count: 687194763]: _86 =3D MEM[(const struct basic_string *)_75 + 16B]._M_dataplus._M_p; goto ; [100.00%] [local count: 171798694]: _84 =3D OBJ_TYPE_REF(_78;(struct KeyValue1)_76->2) (_76); goto ; [100.00%] [count: 0]: : goto ; [100.00%] [local count: 171798694]: [local count: 858993457]: # _79 =3D PHI <_84(46), _86(14)> if (_79 !=3D 0B) goto ; [85.10%] else goto ; [14.90%] [local count: 127990022]: [local count: 322122544]: if (_24 =3D=3D 0B) goto ; [17.43%] else goto ; [82.57%] [local count: 731003435]: _80 =3D MEM[(const struct basic_string *)_75 + 48B]._M_dataplus._M_p; goto ; [100.00%] [local count: 214748368]: _69 =3D OBJ_TYPE_REF(_4;(struct cConfiguration)this_21(D)->22) (this_21(D= ), objectFullPath_27(D), _26); goto ; [100.00%] [count: 0]: : goto ; [100.00%] [local count: 214748368]: [local count: 945751802]: # _29 =3D PHI <_69(49), _80(19)> if (_29 =3D=3D 0B) goto ; [19.04%] else goto ; [80.96%] [local count: 765641716]: goto ; [100.00%] [local count: 180110086]: goto ; [100.00%] [local count: 56145959]: __ct_base .constprop (_30(D), fallbackValue_31(D)); goto ; [100.00%] [count: 0]: : goto ; [100.00%] [local count: 56145959]: [local count: 1073741825]: return _30(D); [local count: 265976585]: [local count: 1017595866]: # s_88 =3D PHI <_29(51), _24(48)> _89 =3D *s_88; if (_89 =3D=3D 34) goto ; [34.00%] else goto ; [66.00%] [local count: 345982598]: *_30(D) =3D opp_parsequotedstr (s_88); [return slot optimization] [local count: 345982598]: goto ; [100.00%] [count: 0]: : goto ; [100.00%] [local count: 671613268]: _99 =3D &MEM[(struct basic_string *)_30(D)].D.4725._M_local_buf; MEM[(struct _Alloc_hider *)_30(D)]._M_p =3D _99; _91 =3D __builtin_strlen (s_88); _92 =3D s_88 + _91; _M_construct.constprop (_30(D), s_88, _92); [local count: 671613268]: goto ; [100.00%] [count: 0]: : goto ; [100.00%] [count: 0]: : [count: 0]: : _113 =3D __builtin_eh_filter (1); if (_113 =3D=3D 1) goto ; [0.00%] else goto ; [0.00%] [count: 0]: : resx 1 [count: 0]: : _8 =3D __builtin_eh_pointer (1); _34 =3D __cxa_begin_catch (_8); _36 =3D __cxa_allocate_exception (128); _9 =3D _34->_vptr.exception; _10 =3D MEM[(int (*__vtbl_ptr_type) () *)_9 + 16B]; _11 =3D OBJ_TYPE_REF(_10;(struct exception)_34->2) (_34); _12 =3D &option_19(D)->D.5508.D.4983.D.4767; _13 =3D option_19(D)->D.5508.D.4983.D.4767.D.4758._vptr.cObject; _14 =3D MEM[(int (*__vtbl_ptr_type) () *)_13 + 48B]; _39 =3D OBJ_TYPE_REF(_14;(struct cNamedObject)_12->6) (_12); [count: 0]: __ct_comp (_36, "Error getting option %s=3D from the configuration: %s",= _39, _11); goto ; [0.00%] [count: 0]: : goto ; [100.00%] [count: 0]: __cxa_throw (_36, &_ZTI13cRuntimeError, __dt_comp ); [count: 0]: : [count: 0]: : __cxa_free_exception (_36); resx 3 [count: 0]: : goto ; [100.00%] [count: 0]: : [count: 0]: : __cxa_end_catch (); resx 2 }=