> These assert should tell you what is wrong with the control flow. > Please look at control_flow_insn_p, which condition returns true.
There is a note after call insn. (call_insn:TI 908 35558 50534 1681 (call (mem:QI (symbol_ref:DI ("_gfortran_stop_string") [flags 0x41] <function_decl 0x7ffff7eb6200 _gfortran_stop_string>) [0 _gfortran_stop_string S1 A8]) (const_int 0 [0])) huygens.fppized.f90:190 616 {*call} (expr_list:REG_DEAD (reg:DI 5 di) (expr_list:REG_DEAD (reg:SI 4 si) (expr_list:REG_NORETURN (const_int 0 [0]) (nil)))) (expr_list:REG_FRAME_RELATED_EXPR (use (reg:DI 5 di)) (expr_list:REG_BR_PRED (use (reg:SI 4 si)) (nil)))) (note 50534 908 909 1681 (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) (const_int 0 [0])) (expr_list:REG_DEP_TRUE (concat:SI (reg:SI 4 si) (const_int 0 [0])) (nil))) NOTE_INSN_CALL_ARG_LOCATION) > You shouldn't disable commit_edge_insertions, as there is the function > where vzerouppers are emitted. I didn;t disable commit_edge_insertions. I only remove call of assert. 2012/11/9 Uros Bizjak <ubiz...@gmail.com>: > On Fri, Nov 9, 2012 at 11:45 AM, Uros Bizjak <ubiz...@gmail.com> wrote: >> On Fri, Nov 9, 2012 at 11:21 AM, Vladimir Yakovlev <vbyakov...@gmail.com> >> wrote: >>> I did changes that moves vzeroupper insertion after reload >>> >>> 2012-11-09 Vladimir Yakovlev <vladimir.b.yakov...@intel.com> >>> >>> * i386/i386-protos.h (ix86_avx256_optimize_mode_switching): New. >>> * config/i386/i386.c (ix86_init_machine_status): Deleted >>> initialization for mode switching. >>> * i386/i386.h (OPTIMIZE_MODE_SWITCHING1): New. >>> * mode-switching.c (gate_mode_switching1): New. >>> (rest_of_handle_mode_switching1): New. >>> (pass_mode_switching1): New. >>> * passes.c (init_optimization_passes): New pass >>> pass_mode_switching1. >>> * tree-pass.h (pass_mode_switching1): New. >>> >>> But this caused assertion fails in rtl_verify_flow_info_1 () at >>> cfgrtl.c:2291 >>> >>> fatal_insn ("flow control insn inside a basic block", x); >>> >>> The asserts are called by two calls of mode-switching.c: >>> commit_edge_insertion and cleanup_cfg. After I commented (see below) >>> 459.GemsFDTD benchspec passed. Your opinion of the patch and haw we >>> can do something with asserts. > > These assert should tell you what is wrong with the control flow. > Please look at control_flow_insn_p, which condition returns true. You > shouldn't disable commit_edge_insertions, as there is the function > where vzerouppers are emitted. > > Uros.