![]() IV (loop2_unroll) doesn't like the mmix port. The feelings are mutual. For mmix, gcc.dg/pr30957-1.c fails (runtime and rtl-scan) for these reasons: - IV doesn't handle the zero-extension-by-shift sequences generated by middle-end (expr.c:convert_mode_scalar) in the absence of zero-extend patterns in a port. - (when adding such patterns) IV doesn't understand the subreg constructs generated by middle-end in the absence of addsi3 and compare/branch in SImode (int). - (when hacking pr30957-1.c to iterate using a register-mode type) IV doesn't understand the admittedly weird SFmode operations (performing in DFmode, then truncating, for lack of SFmode operations, but presence of truncdfsf2 and float_extendsfdf2) in order to perform the "Expanding Accumulator" optimization. When also editing the type in the test to be double instead of float, the test passes. While at least the last point seems like a valid reason to just skip the test for mmix, it also seems possible that IV (and maybe convert_mode_scalar by e.g. adding REG_EQUIV notes) be improved to be both smarter and dumber to actually make the test pass, so I think it's better to use xfail. Smarter: understanding zero-extend- by-shift and subregged operations better, and "seeing" the accumulation through the DF/SFmode truncations and expansions. Dumber: ignoring the cost; unrolling the several operations per SFmode add anyway. I'm considering adding a variant of this test with "double" and "__SIZE_TYPE__" iteration types, as that passes for mmix as-is. Maybe as a mmix-specific test; the world has suffered enough from the questionable gcc.dg/pr30957-1.c (see the test and its history). gcc/testsuite: * gcc.dg/pr30957-1.c: xfail for mmix. |
||
---|---|---|
config | ||
contrib | ||
fixincludes | ||
gcc | ||
gnattools | ||
gotools | ||
include | ||
INSTALL | ||
intl | ||
libada | ||
libatomic | ||
libbacktrace | ||
libcc1 | ||
libcpp | ||
libdecnumber | ||
libffi | ||
libgcc | ||
libgfortran | ||
libgo | ||
libgomp | ||
libhsail-rt | ||
libiberty | ||
libitm | ||
libobjc | ||
liboffloadmic | ||
libphobos | ||
libquadmath | ||
libsanitizer | ||
libssp | ||
libstdc++-v3 | ||
libvtv | ||
lto-plugin | ||
maintainer-scripts | ||
zlib | ||
.dir-locals.el | ||
.gitattributes | ||
.gitignore | ||
ABOUT-NLS | ||
ar-lib | ||
ChangeLog | ||
ChangeLog.jit | ||
ChangeLog.tree-ssa | ||
compile | ||
config-ml.in | ||
config.guess | ||
config.rpath | ||
config.sub | ||
configure | ||
configure.ac | ||
COPYING | ||
COPYING.LIB | ||
COPYING.RUNTIME | ||
COPYING3 | ||
COPYING3.LIB | ||
depcomp | ||
install-sh | ||
libtool-ldflags | ||
libtool.m4 | ||
ltgcc.m4 | ||
ltmain.sh | ||
ltoptions.m4 | ||
ltsugar.m4 | ||
ltversion.m4 | ||
lt~obsolete.m4 | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
missing | ||
mkdep | ||
mkinstalldirs | ||
move-if-change | ||
multilib.am | ||
README | ||
symlink-tree | ||
test-driver | ||
ylwrap |
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.