diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-12-04 12:11:24 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-12-04 12:11:24 +0100 |
commit | f220a4f4e556777fdfbca7b41cda3f234a2507da (patch) | |
tree | ceaa2b1e2d3016b8185eb55ef9d26b1a87ee6fc0 /gcc/c | |
parent | b21fbbd29cee0d18b2e5babf2bee470db98ebb51 (diff) | |
download | gcc-f220a4f4e556777fdfbca7b41cda3f234a2507da.zip gcc-f220a4f4e556777fdfbca7b41cda3f234a2507da.tar.gz gcc-f220a4f4e556777fdfbca7b41cda3f234a2507da.tar.bz2 |
re PR target/59163 (program compiled with g++ -O3 segfaults)
PR target/59163
* config/i386/i386.c (ix86_legitimate_combined_insn): If for
!TARGET_AVX there is misaligned MEM operand with vector mode
and get_attr_ssememalign is 0, return false.
(ix86_expand_special_args_builtin): Add get_pointer_alignment
computed alignment and for non-temporal loads/stores also
at least GET_MODE_ALIGNMENT as MEM_ALIGN.
* config/i386/sse.md
(<sse>_loadu<ssemodesuffix><avxsizesuffix><mask_name>,
<sse>_storeu<ssemodesuffix><avxsizesuffix>,
<sse2_avx_avx512f>_loaddqu<mode><mask_name>,
<sse2_avx_avx512f>_storedqu<mode>, <sse3>_lddqu<avxsizesuffix>,
sse_vmrcpv4sf2, sse_vmrsqrtv4sf2, sse2_cvtdq2pd, sse_movhlps,
sse_movlhps, sse_storehps, sse_loadhps, sse_loadlps,
*vec_interleave_highv2df, *vec_interleave_lowv2df,
*vec_extractv2df_1_sse, sse2_movsd, sse4_1_<code>v8qiv8hi2,
sse4_1_<code>v4qiv4si2, sse4_1_<code>v4hiv4si2,
sse4_1_<code>v2qiv2di2, sse4_1_<code>v2hiv2di2,
sse4_1_<code>v2siv2di2, sse4_2_pcmpestr, *sse4_2_pcmpestr_unaligned,
sse4_2_pcmpestri, sse4_2_pcmpestrm, sse4_2_pcmpestr_cconly,
sse4_2_pcmpistr, *sse4_2_pcmpistr_unaligned, sse4_2_pcmpistri,
sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Add ssememalign attribute.
* config/i386/i386.md (ssememalign): New define_attr.
* g++.dg/torture/pr59163.C: New test.
Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r205661
Diffstat (limited to 'gcc/c')
0 files changed, 0 insertions, 0 deletions