Commit e3d59c5e by Oleg Endo

re PR target/62312 ([SH] Invalid operands for opcode div0s)

gcc/
	PR target/62312
	* config/sh/sh.md (*cmp_div0s_0): Add missing constraints.

gcc/testsuite/
	PR target/62312
	* gcc.c-torture/compile/pr62312.c: New.

From-SVN: r214804
parent e04733ee
2014-09-01 Oleg Endo <olegendo@gcc.gnu.org>
PR target/62312
* config/sh/sh.md (*cmp_div0s_0): Add missing constraints.
2014-09-01 Andi Kleen <ak@linux.intel.com>
* file-find.c (add_prefix_begin): Add.
......@@ -869,9 +869,9 @@
(define_insn "*cmp_div0s_0"
[(set (reg:SI T_REG)
(eq:SI (lshiftrt:SI (match_operand:SI 0 "arith_reg_operand")
(eq:SI (lshiftrt:SI (match_operand:SI 0 "arith_reg_operand" "%r")
(const_int 31))
(ge:SI (match_operand:SI 1 "arith_reg_operand")
(ge:SI (match_operand:SI 1 "arith_reg_operand" "r")
(const_int 0))))]
"TARGET_SH1"
"div0s %0,%1"
......
2014-09-01 Oleg Endo <olegendo@gcc.gnu.org>
PR target/62312
* gcc.c-torture/compile/pr62312.c: New.
2014-09-01 Maciej W. Rozycki <macro@codesourcery.com>
* gcc.dg/tree-ssa/loop-19.c: Exclude classic FPU Power targets.
......
/* PR target/62312 */
typedef struct { unsigned int arg[100]; } *FunctionCallInfo;
typedef struct { int day; int month; } Interval;
void* palloc (unsigned int);
int bar (void);
void baz (void);
void
interval_pl (FunctionCallInfo fcinfo)
{
Interval *span1 = ((Interval *) ((char *) ((fcinfo->arg[0]))));
Interval *span2 = ((Interval *) ((char *) ((fcinfo->arg[1]))));
Interval *result = (Interval *) palloc (sizeof (Interval));
if ((((span1->month) < 0) == ((span2->month) < 0))
&& !(((result->month) < 0) == ((span1->month) < 0)))
do {
if (bar ())
baz ();
} while(0);
result->day = span1->day + span2->day;
}
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