aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorRoger Sayle <roger@nextmovesoftware.com>2020-07-03 10:57:39 +0200
committerTom de Vries <tdevries@suse.de>2020-07-03 10:57:39 +0200
commit26b538cd81b9692eaf519fa1743ca8c282048793 (patch)
tree36a78c0e5b6c29c027d714873433b45aa1284ab3 /gcc/tree-vectorizer.h
parenta63e1915e9ef12fea06fc4676c3e5fce58f26e0a (diff)
downloadgcc-26b538cd81b9692eaf519fa1743ca8c282048793.zip
gcc-26b538cd81b9692eaf519fa1743ca8c282048793.tar.gz
gcc-26b538cd81b9692eaf519fa1743ca8c282048793.tar.bz2
nvptx: Fix ICE in nvptx_vector_alignment on gcc.dg/attr-vector_size.c
This patch addresses the ICE in gcc.dg/attr-vector_size.c during make -k check on nvptx-none. The actual ICE looks like: testsuite/gcc.dg/attr-vector_size.c:29:1: internal compiler error: \ in tree_to_shwi, at tree.c:7321 0xf53bf2 tree_to_shwi(tree_node const*) ../../gcc/gcc/tree.c:7321 0xff1969 nvptx_vector_alignment ../../gcc/gcc/config/nvptx/nvptx.c:5105^M The problem is that the caller has ensured that TYPE_SIZE(type) is representable as an unsigned HOST_WIDE_INT, but nvptx_vector_alignment is accessing it as a signed HOST_WIDE_INT which overflows in pathological conditions. Amongst those pathological conditions is that a TYPE_SIZE of zero can sometimes reach this function, prior to an error being emitted. Making sure the result is not less than the mode's alignment and not greater than BIGGEST_ALIGNMENT fixes the ICEs, and generates the expected compile-time error messages. Tested on --target=nvptx-none, with a "make" and "make check" which results in four fewer unexpected failures and three more expected passes. 2020-07-03 Roger Sayle <roger@nextmovesoftware.com> Tom de Vries <tdevries@suse.de> gcc/ChangeLog: PR target/90932 * config/nvptx/nvptx.c (nvptx_vector_alignment): Use tree_to_uhwi to access TYPE_SIZE (type). Return at least the mode's alignment.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions