Commit c661ca79 by Oleg Endo

re PR target/67506 ([SH]: error: unrecognizable insn when compiling texlive-binaries)

gcc/
	PR target/67506
	* config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Add
	missing simplify_gen_subreg.

gcc/testsuite/
	PR target/67506
	* gcc.c-torture/compile/pr67506.c: New test.

From-SVN: r227646
parent 1ce8ee74
2015-09-10 Oleg Endo <olegendo@gcc.gnu.org>
PR target/67506
* config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Add
missing simplify_gen_subreg.
2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> 2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/s390/s390.c (s390_contiguous_bitmask_vector_p): Reject if * config/s390/s390.c (s390_contiguous_bitmask_vector_p): Reject if
......
...@@ -14016,6 +14016,9 @@ sh_extending_set_of_reg::use_as_extended_reg (rtx_insn* use_at_insn) const ...@@ -14016,6 +14016,9 @@ sh_extending_set_of_reg::use_as_extended_reg (rtx_insn* use_at_insn) const
else else
{ {
rtx extension_dst = XEXP (set_rtx, 0); rtx extension_dst = XEXP (set_rtx, 0);
if (GET_MODE (extension_dst) != SImode)
extension_dst = simplify_gen_subreg (SImode, extension_dst,
GET_MODE (extension_dst), 0);
if (modified_between_p (extension_dst, insn, use_at_insn)) if (modified_between_p (extension_dst, insn, use_at_insn))
{ {
if (dump_file) if (dump_file)
......
2015-09-10 Oleg Endo <olegendo@gcc.gnu.org>
PR target/67506
* gcc.c-torture/compile/pr67506.c: New test.
2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> 2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* gcc.target/s390/vector/vec-genbytemask-1.c: Add check for V1TI * gcc.target/s390/vector/vec-genbytemask-1.c: Add check for V1TI
......
extern struct _IO_FILE *stderr;
typedef long integer;
typedef unsigned char byte;
short nl;
byte * tfmfilearray;
integer charbase, ligkernbase;
unsigned char charsonline;
short c;
unsigned short r;
struct {
short cc;
integer rr;
} labeltable[259];
short sortptr;
unsigned char activity[(32510) + 1];
integer ai, acti;
extern void _IO_putc (char, struct _IO_FILE *);
void
mainbody (void)
{
register integer for_end;
if (c <= for_end)
do {
if (((tfmfilearray + 1001)[4 * (charbase + c) + 2] % 4) == 1)
{
if ( r < nl )
;
else
{
while (labeltable[sortptr ].rr > r)
labeltable[sortptr + 1 ]= labeltable[sortptr];
}
}
} while (c++ < for_end);
if (ai <= for_end)
do {
if (activity[ai]== 2)
{
r = (tfmfilearray + 1001)[4 * (ligkernbase + (ai))];
if (r < 128)
{
r = r + ai + 1 ;
if (r >= nl)
{
if (charsonline > 0)
_IO_putc ('\n', stderr);
}
}
}
} while (ai++ < for_end);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment