aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-07-26 18:47:28 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-07-26 16:47:28 +0000
commite69e3d0e8b7ccc7ba990130dfd6ed909609ed971 (patch)
tree29c0cc7ebb01049429c54e789330710175ac3bf8
parentbf3fb7e43c8d1f22edda0c427a2ac194e8db104b (diff)
downloadgcc-e69e3d0e8b7ccc7ba990130dfd6ed909609ed971.zip
gcc-e69e3d0e8b7ccc7ba990130dfd6ed909609ed971.tar.gz
gcc-e69e3d0e8b7ccc7ba990130dfd6ed909609ed971.tar.bz2
re PR target/27907 (ICE in expand_simple_unop, at optabs.c:2307)
PR rtl-optimization/27907 * expr.c (force_operand): Use convert_move to handle FLOAT_EXTEND and FLOAT_TRUNCATE. * gcc.c-torture/compile/pr27907.c: New test. From-SVN: r115760
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/expr.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr27907.c23
4 files changed, 36 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0ec948f..f4d3620 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-07-26 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/27907
+ * expr.c (force_operand): Use convert_move to handle FLOAT_EXTEND and
+ FLOAT_TRUNCATE.
+
2006-07-25 Roger Sayle <roger@eyesopen.com>
PR middle-end/28473
diff --git a/gcc/expr.c b/gcc/expr.c
index 48ec0ef..a0dc9c3 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6024,6 +6024,8 @@ force_operand (rtx value, rtx target)
case ZERO_EXTEND:
case SIGN_EXTEND:
case TRUNCATE:
+ case FLOAT_EXTEND:
+ case FLOAT_TRUNCATE:
convert_move (target, op1, code == ZERO_EXTEND);
return target;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5f5bdcc..6f504ce 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-26 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/27907
+ * gcc.c-torture/compile/pr27907.c: New test.
+
2006-07-26 Francois-Xavier Coudert <coudert@clipper.ens.fr>
* gfortran.dg/mclock.f90: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr27907.c b/gcc/testsuite/gcc.c-torture/compile/pr27907.c
new file mode 100644
index 0000000..575ac6a
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr27907.c
@@ -0,0 +1,23 @@
+typedef double fann_type;
+typedef struct { } _G_fpos64_t;
+struct fann_neuron
+{
+ fann_type value;
+}
+__attribute__ ((packed));
+struct fann_layer
+{
+ struct fann_neuron *last_neuron;
+};
+struct fann
+{
+ struct fann_layer *first_layer;
+};
+fann_run (struct fann *ann, fann_type * input)
+{
+ struct fann_layer *layer_it, *layer_it2, *last_layer;
+ for (layer_it = ann->first_layer + 1; layer_it != last_layer; layer_it++)
+ {
+ ((layer_it - 1)->last_neuron - 1)->value = 1;
+ }
+}