This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/68269] [5/6 regression] FAIL: gcc.dg/pr68129_1.c (internal compiler error)
- From: "mrs at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 20 Nov 2015 17:44:28 +0000
- Subject: [Bug target/68269] [5/6 regression] FAIL: gcc.dg/pr68129_1.c (internal compiler error)
- Auto-submitted: auto-generated
- References: <bug-68269-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68269
mrs at gcc dot gnu.org <mrs at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|rtl-optimization |target
--- Comment #5 from mrs at gcc dot gnu.org <mrs at gcc dot gnu.org> ---
Ok, at least ia64-elf works.
/* This assert keeps the simplification from producing a result
that cannot be represented in a CONST_DOUBLE but a lot of
upstream callers expect that this function never fails to
simplify something and so you if you added this to the test
above the code would die later anyway. If this assert
happens, you just need to make the port support wide int. */
=> gcc_assert (width <= HOST_BITS_PER_DOUBLE_INT);
So, the meaning is entirely clear. You can either have bad answers and remove
the assert, or fix the port to use wide-int, those are the only two options.
Anyway, the wide-int code was done, because gcc can't work without it. You're
just hitting one of those corners.
gcc is processing:
(set (zero_extract:DI (subreg:DI (reg:OI 381) 0)
(const_int 32 [0x20])
(const_int 0 [0]))
(subreg:DI (reg:SI 382) 0))
with expand_field_assignment, and inner is:
(reg:OI 381)
and compute_mode winds up being OImode. It then goes on to end the world
trying in vein to do wide-int things, but can't. So, I'd recommend fixing the
port to be wide-int based.