aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-11-03 15:49:43 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-11-03 15:49:43 +0000
commit741233cf4dd17bab955b10854eb61fd9e6b419ce (patch)
tree1b911c7805d012ce4fb4fed6aa8e3b3a253f637b /gcc
parent2f73a6c7b419a8328ec6952edbd9389ff98c2c5f (diff)
downloadgcc-741233cf4dd17bab955b10854eb61fd9e6b419ce.zip
gcc-741233cf4dd17bab955b10854eb61fd9e6b419ce.tar.gz
gcc-741233cf4dd17bab955b10854eb61fd9e6b419ce.tar.bz2
tree-eh.c (operation_could_trap_helper_p): Handle conversions like ordinary operations.
2014-11-03 Richard Biener <rguenther@suse.de> * tree-eh.c (operation_could_trap_helper_p): Handle conversions like ordinary operations. * gimplify.c (gimplify_conversion): Gimplify CONVERT_EXPR as NOP_EXPR. From-SVN: r217048
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/gimplify.c4
-rw-r--r--gcc/tree-eh.c5
3 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e709e11..64a5a82 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-11-03 Richard Biener <rguenther@suse.de>
+
+ * tree-eh.c (operation_could_trap_helper_p): Handle conversions
+ like ordinary operations.
+ * gimplify.c (gimplify_conversion): Gimplify CONVERT_EXPR
+ as NOP_EXPR.
+
2014-11-03 Joseph Myers <joseph@codesourcery.com>
* configure.ac (TARGET_GLIBC_MAJOR, TARGET_GLIBC_MINOR): Define
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 38be0ce..2dc505a 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -1739,6 +1739,10 @@ gimplify_conversion (tree *expr_p)
*expr_p = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (*expr_p),
TREE_OPERAND (*expr_p, 0));
+ /* Canonicalize CONVERT_EXPR to NOP_EXPR. */
+ if (TREE_CODE (*expr_p) == CONVERT_EXPR)
+ TREE_SET_CODE (*expr_p, NOP_EXPR);
+
return GS_OK;
}
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index ebd9a3a..36ebc86 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -2436,11 +2436,6 @@ operation_could_trap_helper_p (enum tree_code op,
case UNEQ_EXPR:
return honor_snans;
- case CONVERT_EXPR:
- case FIX_TRUNC_EXPR:
- /* Conversion of floating point might trap. */
- return honor_nans;
-
case NEGATE_EXPR:
case ABS_EXPR:
case CONJ_EXPR: