http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50053
--- Comment #10 from gee <jojelino at gmail dot com> 2011-12-08 19:15:47 UTC --- (In reply to comment #9) whereas with -findirect-dispatch, initializer code isn't omitted. ;; Function () (_ZN3gnu3gcj7convert10Input_UTF8C1Ev, funcdef_no=47, decl_uid=3185, cgraph_uid=94) () (struct gnu.gcj.convert.Input_UTF8 * this) { int D.9476; struct java.lang.Object * D.3210; int #slot#2#4; struct java.lang.Object * D.3207; void * #ref#1#2; struct java.lang.Object * D.3203; void * #ref#0#0; int * D.9474; sizetype D.9473; int D.9472; void * _ref_1_2.1045; int * iftmp.1044; int * D.9467; sizetype D.9466; int D.9465; void * _ref_1_2.1043; int * iftmp.1042; void gnu.gcj.convert.BytesToUnicode::<T12d> (struct gnu.gcj.convert.BytesToUnicode *) * D.9460; void * D.9459; void * _ref_1_2.1041; <bb 2>: D.3203_2 = this_1(D); #ref#1#2_3 = D.3203_2; _ref_1_2.1041_4 = #ref#1#2_3; D.9459_5 = _atable_gnu_gcj_convert_Input_UTF8[1]; D.9460_6 = (void gnu.gcj.convert.BytesToUnicode::<T12d> (struct gnu.gcj.convert.BytesToUnicode *) *) D.9459_5; D.9460_6 (_ref_1_2.1041_4); D.3207_7 = this_1(D); #ref#1#2_8 = D.3207_7; #slot#2#4_9 = 0; _ref_1_2.1043_10 = #ref#1#2_8; if (_ref_1_2.1043_10 == 0B) goto <bb 3>; else goto <bb 4>; <bb 3>: _Jv_ThrowNullPointerException (); <bb 4>: iftmp.1042_11 = _ref_1_2.1043_10; D.9465_12 = _otable_gnu_gcj_convert_Input_UTF8[1]; D.9466_13 = (sizetype) D.9465_12; D.9467_14 = iftmp.1042_11 + D.9466_13; *D.9467_14 = #slot#2#4_9; D.3210_15 = this_1(D); #ref#1#2_16 = D.3210_15; #slot#2#4_17 = 0; _ref_1_2.1045_18 = #ref#1#2_16; if (_ref_1_2.1045_18 == 0B) goto <bb 5>; else goto <bb 6>; <bb 5>: _Jv_ThrowNullPointerException (); <bb 6>: iftmp.1044_19 = _ref_1_2.1045_18; D.9476_20 = _otable_gnu_gcj_convert_Input_UTF8[2]; D.9472_21 = D.9476_20; D.9473_22 = (sizetype) D.9472_21; D.9474_23 = iftmp.1044_19 + D.9473_22; *D.9474_23 = #slot#2#4_17; <L4>: return; }