diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 2004-04-25 19:54:42 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2004-04-25 19:54:42 -0400 |
commit | 95df09f0a848d8e76f3e6b76d62e73ea825cfac7 (patch) | |
tree | 189bd2aa858b59fd84706e48441886b809f05c55 /gcc/tree.c | |
parent | d7d2303533b184f5ac4faee20c09f78e19ef3c1a (diff) | |
download | gcc-95df09f0a848d8e76f3e6b76d62e73ea825cfac7.zip gcc-95df09f0a848d8e76f3e6b76d62e73ea825cfac7.tar.gz gcc-95df09f0a848d8e76f3e6b76d62e73ea825cfac7.tar.bz2 |
PR/c++ 15119
PR/c++ 15119
* tree.c (substitute_placeholder_in_expr, case 4): New case,
for TARGET_EXPR.
From-SVN: r81170
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -2053,7 +2053,7 @@ tree substitute_placeholder_in_expr (tree exp, tree obj) { enum tree_code code = TREE_CODE (exp); - tree op0, op1, op2; + tree op0, op1, op2, op3; /* If this is a PLACEHOLDER_EXPR, see if we find a corresponding type in the chain of OBJ. */ @@ -2151,6 +2151,19 @@ substitute_placeholder_in_expr (tree exp, tree obj) else return fold (build3 (code, TREE_TYPE (exp), op0, op1, op2)); + case 4: + op0 = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TREE_OPERAND (exp, 0), obj); + op1 = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TREE_OPERAND (exp, 1), obj); + op2 = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TREE_OPERAND (exp, 2), obj); + op3 = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TREE_OPERAND (exp, 3), obj); + + if (op0 == TREE_OPERAND (exp, 0) && op1 == TREE_OPERAND (exp, 1) + && op2 == TREE_OPERAND (exp, 2) + && op3 == TREE_OPERAND (exp, 3)) + return exp; + else + return fold (build4 (code, TREE_TYPE (exp), op0, op1, op2, op3)); + default: abort (); } |