annotate sources/replace-args.c @ 2:50e23a4b2f40

add many files.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 05 Feb 2010 10:00:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 static tree
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 cbc_replace_arguments (location_t loc, tree call)
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 {
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 tree args;
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 tree fn;
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 tree tmp_decl;
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 int i=0;
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 fn = CALL_EXPR_FN (call);
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 if ( TREE_CODE (fn)==PARM_DECL || !TREE_CONSTANT (fn) )
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 {
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 tmp_decl = build_decl (VAR_DECL, NULL_TREE, TREE_TYPE(fn));
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 pushdecl (tmp_decl);
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 add_stmt (build_modify_expr (loc, tmp_decl, NOP_EXPR, fn));
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 CALL_EXPR_FN (call) = tmp_decl;
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 }
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 args = CALL_EXPR_ARGS (call);
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 for ( ;args; args = TREE_CHAIN (args), i++)
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 {
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 tree arg = TREE_VALUE (args);
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 if ( TREE_CODE (arg)==PARM_DECL || !TREE_CONSTANT (arg) )
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 {
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 tmp_decl = build_decl (VAR_DECL, NULL_TREE, TREE_TYPE(arg));
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 pushdecl (tmp_decl);
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 add_stmt (build_modify_expr (loc, tmp_decl, NOP_EXPR, arg));
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 CALL_EXPR_ARG (call, i) = tmp_decl;
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 }
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 }
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 return call;
50e23a4b2f40 add many files.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 }