aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-12-09 21:11:21 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-12-09 21:11:21 +0000
commit8f420307e03a391b8e4bcd57be36d8d6325c7638 (patch)
treebc6cf2a1adf2e08f2944731e840762fef0d4a29d /gcc
parent6d1c2bd3ae36584af0b6d288569c845e86600bda (diff)
downloadgcc-8f420307e03a391b8e4bcd57be36d8d6325c7638.zip
gcc-8f420307e03a391b8e4bcd57be36d8d6325c7638.tar.gz
gcc-8f420307e03a391b8e4bcd57be36d8d6325c7638.tar.bz2
gimple-fold.c (gimple_fold_stmt_to_constant_1): Also check the TYPE_MODE to recognize useless pointer conversions.
* gimple-fold.c (gimple_fold_stmt_to_constant_1) <GIMPLE_UNARY_RHS>: Also check the TYPE_MODE to recognize useless pointer conversions. From-SVN: r182178
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/gimple-fold.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20111209-1.c13
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0400f1b..4cc5072 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimple-fold.c (gimple_fold_stmt_to_constant_1) <GIMPLE_UNARY_RHS>:
+ Also check the TYPE_MODE to recognize useless pointer conversions.
+
2011-12-09 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/51117
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 5da9be3..91dd8fc 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -2517,8 +2517,10 @@ gimple_fold_stmt_to_constant_1 (gimple stmt, tree (*valueize) (tree))
if (CONVERT_EXPR_CODE_P (subcode)
&& POINTER_TYPE_P (TREE_TYPE (lhs))
&& POINTER_TYPE_P (TREE_TYPE (op0))
- && (TYPE_ADDR_SPACE (TREE_TYPE (lhs))
- == TYPE_ADDR_SPACE (TREE_TYPE (op0))))
+ && TYPE_ADDR_SPACE (TREE_TYPE (lhs))
+ == TYPE_ADDR_SPACE (TREE_TYPE (op0))
+ && TYPE_MODE (TREE_TYPE (lhs))
+ == TYPE_MODE (TREE_TYPE (op0)))
return op0;
return
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5c3e51b..ac300e8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-12-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/compile/20111209-1.c: New test.
+
2011-12-09 Jason Merrill <jason@redhat.com>
PR c++/51151
diff --git a/gcc/testsuite/gcc.c-torture/compile/20111209-1.c b/gcc/testsuite/gcc.c-torture/compile/20111209-1.c
new file mode 100644
index 0000000..c7f832a
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20111209-1.c
@@ -0,0 +1,13 @@
+/* { dg-do compile { target s390x-*-* *-*-*vms* } } */
+
+typedef char* char_ptr32 __attribute__ ((mode(SI)));
+
+char_ptr32 getenv (const char *name);
+unsigned long strlen (const char *str);
+
+void
+__gnat_getenv (char *name, int *len, char **value)
+{
+ *value = getenv (name);
+ *len = strlen (*value);
+}