aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChen Gang <gang.chen.5i5j@gmail.com>2014-09-29 16:40:10 +0000
committerMichael Eager <eager@gcc.gnu.org>2014-09-29 16:40:10 +0000
commitd03efd2a58a0a2eda9f8ffbfd0cea59aecdffd29 (patch)
tree3121ab327fe48cda206b610f88caf3aba1603b29
parentf642a8b72fb1ed23ff709b9ccaae4457df169b7c (diff)
downloadgcc-d03efd2a58a0a2eda9f8ffbfd0cea59aecdffd29.zip
gcc-d03efd2a58a0a2eda9f8ffbfd0cea59aecdffd29.tar.gz
gcc-d03efd2a58a0a2eda9f8ffbfd0cea59aecdffd29.tar.bz2
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/microblaze/microblaze.md2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/calls-void.c23
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3c820e9..acc3688 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
index b971737..3b4faf4 100644
--- a/gcc/config/microblaze/microblaze.md
+++ b/gcc/config/microblaze/microblaze.md
@@ -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))]
""
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 925adf8..9b709f5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+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
diff --git a/gcc/testsuite/gcc.c-torture/compile/calls-void.c b/gcc/testsuite/gcc.c-torture/compile/calls-void.c
new file mode 100644
index 0000000..a8dacd7
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/calls-void.c
@@ -0,0 +1,23 @@
+/* { 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)();
+}