[Bug target/50788] [4.7 Regression] ICE: in merge_overlapping_regs, at regrename.c:318 with -mavx -fpeel-loops -fstack-protector-all and __builtin_ia32_maskloadpd256
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Oct 23 13:06:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50788
--- Comment #8 from Uros Bizjak <ubizjak at gmail dot com> 2011-10-23 13:05:43 UTC ---
Looking a bit deeper into the problem - maskload pattern is simply wrong. There
is no dependency on the previous value in the register, vmaskmov insn puts zero
when value is not moved into the destination register.
So,
(define_insn "*avx_maskload<ssemodesuffix><avxsizesuffix>"
[(set (match_operand:VF 0 "register_operand" "=x")
(unspec:VF
[(match_operand:<sseintvecmode> 1 "register_operand" "x")
(match_operand:VF 2 "memory_operand" "m")]
UNSPEC_MASKMOV))]
"TARGET_AVX"
"vmaskmov<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "type" "sselog1")
(set_attr "prefix_extra" "1")
(set_attr "prefix" "vex")
(set_attr "mode" "<MODE>")])
More information about the Gcc-bugs
mailing list