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 | |
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
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree.c | 15 |
2 files changed, 21 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 10de4bd..b74866c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,10 @@ -2004-03-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> +2004-04-25 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + + PR/c++ 15119 + * tree.c (substitute_placeholder_in_expr, case 4): New case, + for TARGET_EXPR. + +2004-04-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> * gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle, __gcov_execv, __gcov_execvp, __gcov_execve): Do not declare when @@ -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 (); } |