@@ -11725,6 +11725,12 @@ (define_expand "return"
[(simple_return)]
"ix86_can_use_return_insn_p ()"
{
+ /* Emit vzeroupper if needed. */
+ if (TARGET_VZEROUPPER
+ && !TREE_THIS_VOLATILE (cfun->decl)
+ && !cfun->machine->caller_return_avx256_p)
+ emit_insn (gen_avx_vzeroupper (const2_rtx));
+
if (crtl->args.pops_args)
{
rtx popc = GEN_INT (crtl->args.pops_args);
@@ -11741,6 +11747,12 @@ (define_expand "simple_return"
[(simple_return)]
"!TARGET_SEH"
{
+ /* Emit vzeroupper if needed. */
+ if (TARGET_VZEROUPPER
+ && !TREE_THIS_VOLATILE (cfun->decl)
+ && !cfun->machine->caller_return_avx256_p)
+ emit_insn (gen_avx_vzeroupper (const2_rtx));
+
if (crtl->args.pops_args)
{
rtx popc = GEN_INT (crtl->args.pops_args);