Daniel Berlin,您好! I'am gcc beginner,thank your answer .
Is it the return Value of GetCallArgOperand function that u given stmt tree? I pass return value--ops to function FOR_EACH_SSA_TREE_OPERAND FOR_EACH_SSA_TREE_OPERAND (use, ops, iter, SSA_OP_ALL_USES) { } but ,at runtime ,FOR_EACH_SSA_TREE_OPERAND report internal compiler error: in stmt_ann, at tree-flow-inline.h:55 . what happen? Maybe there is another problem.how to fix it? Maybe My really problem is How to get stmt tree from a common tree value. ======= 2005-07-05 18:40:00 您在来信中写道:======= >On Tue, 2005-07-05 at 23:18 +0800, alert7 wrote: >> hi,all >> >> >> I don't know how to get the Nth argument stmt from CALL_EXPR stmt >> tree? > > >assuming TREE_CODE (call) == CALL_EXPR: > >GetCallArgOperand(tree call, int i) >{ > int j = 0; > tree arg; > for (arg = TREE_OPERAND (call, 1); arg; arg = TREE_CHAIN (arg), j++) > { > if (i == j) > return TREE_VALUE (arg); > > } >} > >> >> the GetCallArgOperands implement this function that i code ,but it >> isn't working :( > >You are looking at the arguments the declaration takes, instead of the >arguments passed to the function. >Arguments passed to the function are stored in TREE_OPERAND (call, 1), >as tree.def says. > >> >> thanks any advice or piece of example code . >> >> ////////////////////////////////////////////////////// >> >> tree GetCallArgOperands(tree stmt ,int i){ >> tree func, param, args; >> int j = 1; >> >> >> func = get_callee_fndecl (stmt); >> >> for (param = DECL_ARGUMENTS (func), args = TREE_OPERAND (stmt, 1); >> param && args; >> param = TREE_CHAIN (param), args = TREE_CHAIN (args)) >> { >> tree arg = TREE_VALUE (args); >> if (param != arg) >> { >> // FIXME: >> } >> if (j==i) >> { >> fprintf(stderr,"args ----------\n"); >> debug_tree(arg); >> >> return default_def (arg); //FIXME: to stmt tree ? >> } >> >> j++; >> } >> return NULL_TREE; >> } >> ///////////////////////////////////////////////// >> >> >> >> >> >> bugs >> [EMAIL PROTECTED] >> 2005-07-05 >> >> = = = = = = = = = = = = = = = = = = = = 致 礼! alert7 [EMAIL PROTECTED] 2005-07-06