This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Understanding uses of a statement and def-use chains


I am implementing a GCC Pass as IPA_Pass before the pass
"whole-program". I am using LTO to run my pass once during linking

I am having trouble interpreting the results of the def-use chains for
SSA Variables. I am traversing the def use chains backwards to access
the variables that affect the current one's values.
This is my sample code

struct dpndntStmt * getDpndStmt(tree ssaName){
   gimple stmt = SSA_NAME_DEF_STMT(ssaName);
    use_optype_p ptr;
    for (ptr = gimple_use_ops (stmt); ptr; ptr = ptr->next){
        list->push_back( getDpndStmt( *(ptr->use_ptr.use) ) );

Essentially, I am accessing the variables that are used in the current
statement, and look for uses in their definition statements (creating
a data dependence tree).

This works perfectly in some examples, but it gives unexplainable
results in other cases (squid, postgres). One of the examples are
given below

"    Stmt: _23 = SkipBuildPrefix ("");
        Stmt: _20 = getDebugOut ();
            Stmt: sectionLevel = sectionLevel.220_17;

"  <bb 5>:
  sectionLevel = sectionLevel.220_17;
  _20 = getDebugOut ();
  # DEBUG _dbo => _20
  level.219_21 = level;
  if (level.219_21 > 1)
    goto <bb 6>;
    goto <bb 10>;

  <bb 6>:
  _23 = SkipBuildPrefix ("");
  # DEBUG __out => _20
  # DEBUG __s => _23
  if (_23 == 0B)
    goto <bb 7>;
    goto <bb 8>;

What the def use chains say is that the statement "_23 =
SkipBuildPrefix ("");" defines _23 (correct) but uses _20
variable (incorrect?). Going forward with the statement "_20 =
getDebugOut ();", we see more issues in the Output above.

I was hoping you could enlighten me if I am misinterpreting the data
structures. I will be thankful for your help.

Thanks and Regards
Rohit Bhatia

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]