Commit d03efd2a by Chen Gang Committed by Michael Eager

Fix ICE.

Fix ICE.  Need use VOID instead of SI, or when real VOIDmode comes, it does not
match SImode, so cause issue.

2014-09-25  Chen Gang  <gang.chen.5i5j@gmail.com>

gcc:
	* config/microblaze/microblaze.md (call_internal1): Use VOID
	instead of SI to fix "((void (*)(void)) 0)()" issue
gcc/testsuite:
	* gcc.c-torture/compile/calls-void.c: New test.

From-SVN: r215684
parent f642a8b7
2014-09-29 Chen Gang <gang.chen.5i5j@gmail.com>
* config/microblaze/microblaze.md (call_internal1): Use VOID
instead of SI to fix "((void (*)(void)) 0)()" issue
2014-09-29 Nick Clifton <nickc@redhat.com>
* config/msp430/msp430.c (msp430_expand_prologue): Return a
......@@ -2062,7 +2062,7 @@
(set_attr "length" "4")])
(define_insn "call_internal1"
[(call (mem (match_operand:SI 0 "call_insn_simple_operand" "ri"))
[(call (mem (match_operand:VOID 0 "call_insn_simple_operand" "ri"))
(match_operand:SI 1 "" "i"))
(clobber (reg:SI R_SR))]
""
......
2014-09-29 Chen Gang <gang.chen.5i5j@gmail.com>
* gcc.c-torture/compile/calls-void.c: New test.
2014-09-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51385
......
/* { dg-require-effective-target ptr32plus } */
typedef void (*T)(void);
f1 ()
{
((T) 0)();
}
f2 ()
{
((T) 1000)();
}
f3 ()
{
((T) 10000000)();
}
f4 (r)
{
((T) r)();
}
f5 ()
{
int (*r)() = f3;
((T) r)();
}
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