Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:11.4
gcc41
nov494022.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nov494022.diff of Package gcc41
2008-08-12 Jakub Jelinek <jakub@redhat.com> PR middle-end/37014 * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR. * dojump.c (do_jump): Likewise. PR middle-end/37014 * gcc.c-torture/compile/20080812-1.c: New test. Index: gcc/dojump.c =================================================================== --- gcc/dojump.c.orig 2005-10-28 16:17:39.000000000 +0200 +++ gcc/dojump.c 2009-11-20 13:42:34.000000000 +0100 @@ -306,8 +306,6 @@ do_jump (tree exp, rtx if_false_label, r break; } - case TRUTH_ANDIF_EXPR: - case TRUTH_ORIF_EXPR: case COMPOUND_EXPR: /* Lowered by gimplify.c. */ gcc_unreachable (); @@ -517,6 +515,7 @@ do_jump (tree exp, rtx if_false_label, r if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1))) goto normal; + case TRUTH_ANDIF_EXPR: if (if_false_label == NULL_RTX) { drop_through_label = gen_label_rtx (); @@ -537,6 +536,7 @@ do_jump (tree exp, rtx if_false_label, r if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1))) goto normal; + case TRUTH_ORIF_EXPR: if (if_true_label == NULL_RTX) { drop_through_label = gen_label_rtx (); Index: gcc/expr.c =================================================================== --- gcc/expr.c.orig 2009-11-20 13:41:34.000000000 +0100 +++ gcc/expr.c 2009-11-20 13:42:34.000000000 +0100 @@ -8283,7 +8283,10 @@ expand_expr_real_1 (tree exp, rtx target /* If no set-flag instruction, must generate a conditional store into a temporary variable. Drop through and handle this like && and ||. */ - + /* Although TRUTH_{AND,OR}IF_EXPR aren't present in GIMPLE, they + are occassionally created by folding during expansion. */ + case TRUTH_ANDIF_EXPR: + case TRUTH_ORIF_EXPR: if (! ignore && (target == 0 || modifier == EXPAND_STACK_PARM @@ -8484,8 +8487,6 @@ expand_expr_real_1 (tree exp, rtx target case POSTDECREMENT_EXPR: case LOOP_EXPR: case EXIT_EXPR: - case TRUTH_ANDIF_EXPR: - case TRUTH_ORIF_EXPR: /* Lowered by gimplify.c. */ gcc_unreachable (); Index: gcc/testsuite/gcc.c-torture/compile/20080812-1.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gcc/testsuite/gcc.c-torture/compile/20080812-1.c 2009-11-20 13:42:34.000000000 +0100 @@ -0,0 +1,21 @@ +/* PR middle-end/37014 */ + +void bar (signed char *); + +void +foo (int x, int y) +{ + int i; + signed char a[123], b[123], c; + for (i = 0; i < 123; i++) + { + int e = y - x; + int d = e < 0 ? -e : e; + c = d < 75; + a[y] = c; + b[y] = c; + y--; + } + bar (b); + bar (a); +}
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor