summaryrefslogtreecommitdiff
path: root/gcc/match.pd
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-05-21 13:23:41 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-05-21 13:23:41 +0000
commit5ba3ae6db5a599b3b8d3eaf500c47f447b36babf (patch)
treea38c2b2cacc71e52c0cc086b402691fb13a837b1 /gcc/match.pd
parent1ca46a7753d416f7f5610f82cca7f89683bf4da0 (diff)
downloadgcc-5ba3ae6db5a599b3b8d3eaf500c47f447b36babf.tar.gz
re PR c++/66211 (Rvalue conversion in ternary operator causes internal compiler error)
2015-05-21 Richard Biener <rguenther@suse.de> PR c++/66211 * match.pd: Guard pattern optimzing (int)(float)int conversions to apply only on GIMPLE. * g++.dg/conversion/pr66211.C: New testcase. * gcc.dg/tree-ssa/forwprop-18.c: Adjust. From-SVN: r223483
Diffstat (limited to 'gcc/match.pd')
-rw-r--r--gcc/match.pd3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/match.pd b/gcc/match.pd
index 54500d91916..ce628531136 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -791,7 +791,8 @@ along with GCC; see the file COPYING3. If not see
/* If we are converting an integer to a floating-point that can
represent it exactly and back to an integer, we can skip the
floating-point conversion. */
- (if (inside_int && inter_float && final_int &&
+ (if (GIMPLE /* PR66211 */
+ && inside_int && inter_float && final_int &&
(unsigned) significand_size (TYPE_MODE (inter_type))
>= inside_prec - !inside_unsignedp)
(convert @0))))))