GlobalsModRef

Hi all,

I'm implementing an intra-procedural analysis. For correctness, during
the analysis of each function I need to know which global variables
may be modified by other functions in order to avoid wrong assumptions
about those variables.

I looked at lib/Analysis/IPA/GlobalsModRef.cpp and it seems that it
does what I want. My problem is that I don't know how to use it ;-(

I wrote a pass:

  struct MyPass : public FunctionPass {
    ....
    virtual void getAnalysisUsage(AnalysisUsage& AU) const {
       AU.addRequired<GlobalsModRef>();
       ...
    }
    ...
  }

but then I don't know which header file should I include. Otherwise, I
get the obvious error that "GlobalsModRef was not declared in this
scope"

Sorry because it's a basic question but I looked for any client of
GlobalsModRef in the llvm tree but it seems nobody uses it.

Regards,
Jorge

Hi Jorge,

I'm implementing an intra-procedural analysis. For correctness, during
the analysis of each function I need to know which global variables
may be modified by other functions in order to avoid wrong assumptions
about those variables.

I looked at lib/Analysis/IPA/GlobalsModRef.cpp and it seems that it
does what I want. My problem is that I don't know how to use it ;-(

I wrote a pass:

   struct MyPass : public FunctionPass {
     ....
     virtual void getAnalysisUsage(AnalysisUsage& AU) const {
        AU.addRequired<GlobalsModRef>();
        ...
     }
     ...
   }

but then I don't know which header file should I include. Otherwise, I
get the obvious error that "GlobalsModRef was not declared in this
scope"

Sorry because it's a basic question but I looked for any client of
GlobalsModRef in the llvm tree but it seems nobody uses it.

I think the reason for that is that you are supposed to use the generic
alias analysis interface. This then queries any present alias analyses
(like GlobalsModRef) for you.

Ciao, Duncan.

Got it!

Thanks

Jorge