I think that we are talking about two different things. I understand
that in order to use LLVM classes you must either qualify them with the
llvm namespace or use the statement "using namespace llvm;" What
I'm
saying is that it has been my experience that when a pass Y depends on
another pass X, i.e, Y is a required analysis of X, then Y must be
defined within the llvm namespace rather than in an anonymous namespace
as http://llvm.org/docs/WritingAnLLVMPass.html suggests it should be.
I'm wondering if that is correct, or if I'm missing something.
Regards,
Ryan
Devang Patel wrote:> On Sep 26, 2006, at 5:49 PM, Ryan M. Lefever wrote:
>
>> I am trying to create two passes X and Y, in which pass X depends on
>> pass Y. After attempting this several times it appears that pass Y
>> must
>> be in the llvm namespace. Whenever it was not in the llvm namespace,
>> "opt -load" would complain about undefined symbols when I
called
>> getAnalysis<>(). Am I correct that the pass that is depended on
must
>> be
>> in the llvm namespace? If so, that was not clear in the documentation
>> regarding writing an LLVM pass.
>
> http://llvm.org/docs/WritingAnLLVMPass.html says,
>
> -----
> Basic code required
> Now that we have a way to compile our new pass, we just have to write
> it. Start out with:
>
> #include "llvm/Pass.h"
> #include "llvm/Function.h"
> Which are needed because we are writing a Pass, and we are operating
> on Function's.
>
> Next we have:
>
> using namespace llvm;
> ... which is required because the functions from the include files
> live in the llvm namespace.
>
> ----