https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89680
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ra Component|target |rtl-optimization --- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- This issue can be "solved" by the following cost-adjustment patch: diff --git a/gcc/config/i386/x86-tune-costs.h b/gcc/config/i386/x86-tune-costs.h index ac06e37733a0..9301fc2d9231 100644 --- a/gcc/config/i386/x86-tune-costs.h +++ b/gcc/config/i386/x86-tune-costs.h @@ -1457,7 +1457,7 @@ struct processor_costs skylake_cost = { {6, 6, 6, 10, 20}, /* cost of loading SSE registers in 32,64,128,256 and 512-bit */ {6, 6, 6, 10, 20}, /* cost of unaligned loads. */ - {8, 8, 8, 12, 24}, /* cost of storing SSE registers + {8, 6, 8, 12, 24}, /* cost of storing SSE registers in 32,64,128,256 and 512-bit */ {8, 8, 8, 8, 16}, /* cost of unaligned stores. */ 2, 2, /* SSE->integer and integer->SSE moves */ However, RA should notice that the value is already in memory and should be loaded from there regardless of costs. Based on this reasoning, I think this is RA problem.