Go to file
Li Jia He e86ae7bab3 [rs6000] fix PR 88100, range check for vec_splat_{su}{8,16,32}
GCC revision 259524 implemented range check for the vec_splat_{su}{8,16,32}
builtins.  However, as a consequence of the implementation, the range check
is not done correctly for the expected vspltis[bhw] instructions.  The result
is that we may not get a valid error message if the valid range of the data
is exceeded.

Although the input of the function prototype of vec_splat_{su}{8,16,32} is
const int, the actual data usage range is limited to the data range of 5 bits
signed.  We should limit the int_cst.val[0] data to the 5 bit signed data range
without any modification in the input arg0 parameter.  However, the sext_hwi
function intercepts the data of TREE_INT_CST_LOW (arg0) as size bits in the
sext_hwi (TREE_INT_CST_LOW (arg0), size) statement.  This will cause some of
the excess data to fall within the range of 5 bits signed, so that the correct
diagnostic information cannot be generated, we need to remove the sext_hwi to
ensure that the input data has not been modified.

This patch fix range check for the vec_splat_s[8,16,32] builtins.  The argument
must be a 5-bit const int as specified for the vspltis[bhw] instructions.

for gcc/ChangeLog

	PR target/88100
	* gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin)
	<case ALTIVEC_BUILTIN_VSPLTISB, ALTIVEC_BUILTIN_VSPLTISH,
	ALTIVEC_BUILTIN_VSPLTISW>: Don't convert the operand before
	range checking it.

for gcc/testsuite/ChangeLog

	PR target/88100
	* gcc/testsuite/gcc.target/powerpc/pr88100.c: New testcase.

From-SVN: r269033
2019-02-20 02:35:39 +00:00
INSTALL
config
contrib
fixincludes
gcc [rs6000] fix PR 88100, range check for vec_splat_{su}{8,16,32} 2019-02-20 02:35:39 +00:00
gnattools
gotools re PR go/89193 ("make distclean" leaves stuff in gotools/) 2019-02-13 00:10:06 +00:00
include Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp 2019-02-12 13:02:48 +00:00
intl
libada
libatomic
libbacktrace [libbacktrace] Handle bsearch with NULL base in dwarf_lookup_pc 2019-02-12 14:00:59 +00:00
libcc1
libcpp Use 1UL constant in order to not overflow (PR c++/89383). 2019-02-18 09:46:19 +00:00
libdecnumber
libffi
libgcc unwind-dw2.c (_Unwind_GetGR): Compare regno instead of index to DWARF_ZERO_REG. 2019-02-19 17:10:00 +01:00
libgfortran
libgo re PR go/89169 (FAIL: internal/cpu) 2019-02-19 15:42:09 +00:00
libgomp re PR c/87924 (OpenACC wait clauses without async-arguments) 2019-02-19 14:10:15 +00:00
libhsail-rt
libiberty Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp 2019-02-12 13:02:48 +00:00
libitm
libobjc
liboffloadmic
libphobos Makefile.am: Avoid the -D option which is not available with the install-sh fallback. 2019-02-19 18:21:26 +00:00
libquadmath
libsanitizer
libssp
libstdc++-v3 Adjust C++11/C++14 tests to work with -fchar8_t 2019-02-19 02:55:12 +00:00
libvtv
lto-plugin
maintainer-scripts
zlib
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
COPYING
COPYING.LIB
COPYING.RUNTIME
COPYING3
COPYING3.LIB
ChangeLog
ChangeLog.jit
ChangeLog.tree-ssa
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
README
ar-lib
compile
config-ml.in
config.guess
config.rpath
config.sub
configure
configure.ac
depcomp
install-sh
libtool-ldflags
libtool.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
symlink-tree
test-driver
ylwrap

README

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.