PR/c++ 15119

PR/c++ 15119
	* tree.c (substitute_placeholder_in_expr, case 4): New case,
	for TARGET_EXPR.

From-SVN: r81170
This commit is contained in:
Richard Kenner 2004-04-25 19:54:42 -04:00
parent d7d2303533
commit 95df09f0a8
2 changed files with 21 additions and 2 deletions

View File

@ -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

View File

@ -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 ();
}