This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [off-list] Re: [PATCH] Vzeroupper placement/47440


> 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 <ubizjak@gmail.com>:
> On Fri, Nov 9, 2012 at 11:45 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
>> On Fri, Nov 9, 2012 at 11:21 AM, Vladimir Yakovlev <vbyakovl23@gmail.com> wrote:
>>> I did changes that moves vzeroupper insertion after reload
>>>
>>> 2012-11-09  Vladimir Yakovlev  <vladimir.b.yakovlev@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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]