Ratnesh Tiwari via llvm-dev
2018-Aug-14 02:09 UTC
[llvm-dev] Error: ‘class llvm::PassManager<llvm::Module>’ has no member named ‘add’
Hi Philip, I also tried that including file: #include "llvm/IR/LegacyPassManager.h" but error remain same. Please help. On Tue, Aug 14, 2018, 2:58 AM Philip Pfaffe <philip.pfaffe at gmail.com> wrote:> Hi Ratnesh, > > the PassManager used in that example has moved into the legacy namespace: > http://llvm.org/doxygen/classllvm_1_1legacy_1_1PassManager.html > > Cheers, > Philip > > On Mon, Aug 13, 2018 at 8:49 PM Ratnesh Tiwari via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> Hi, I am begineer to llvm, implementing a main.cpp from >> https://github.com/davidar/lljvm/blob/master/backend/main.cpp >> >> A) : When I am declaring a command: >> * PassManager PM* >> * PM.add(new DataLayout td)* >> >> It shows error: >> > >> *error: missing template arguments before ‘PM’* >> * PassManager PM;* >> ^ >> >*main_test.cpp:48:2: error: ‘PM’ was not declared in this scope* >> * PM.add(new DataLayout(td));* >> >> Keeping in mind the above error, I changed the code as: >> *PassManager<Module> PM* >> *PM.add(new DataLayout td)* >> >> I dont know, whether the above change is the correct one or not. But the >> error is changed to: >> >> >*error: ‘class llvm::PassManager<llvm::Module>’ has no member named >> ‘add’* >> * PM.add(new DataLayout(td));* >> >> Here is mine source code: >> ----------------------------------------------- >> #include "backened.h" >> #include <iostream> >> #include "llvm/Bitcode/BitcodeReader.h" >> #include "llvm/IR/Function.h" >> #include "llvm/IR/LLVMContext.h" >> #include "llvm/IR/Module.h" >> #include "llvm/Support/CommandLine.h" >> #include "llvm/Support/ErrorOr.h" >> #include "llvm/Support/MemoryBuffer.h" >> #include "llvm/Support/raw_ostream.h" >> #include "llvm/IR/PassManager.h" >> #include "llvm/CodeGen/Passes.h" >> #include "llvm/IR/DataLayout.h" >> #include <llvm/Transforms/Scalar.h> >> #include "llvm/IR/LegacyPassManager.h" >> >> using namespace llvm; >> using namespace std; >> >> static cl::opt<string> input(cl::Positional, cl::desc("Bitcode >> File.."),cl::Required); >> static cl::opt<string> classname("classname",cl::desc("Binary name of the >> generated class...")); >> >> int main(int argc, char** argv) >> { >> cl::ParseCommandLineOptions(argc, argv, "Hi.."); >> LLVMContext context; >> >> >> ErrorOr<unique_ptr<MemoryBuffer>> mb >> MemoryBuffer::getFile(input); >> if(error_code ec = mb.getError()) >> { >> errs() << ec.message(); >> return 1; >> } >> >> Expected<unique_ptr<Module>> m >> parseBitcodeFile(mb->get()->getMemBufferRef(),context); >> if(error_code ec= errorToErrorCode(m.takeError()) ) >> { >> PassManager<Module> PM; >> DataLayout td("e-p:32:32:32" >> "-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" >> "-f32:32:32-f64:64:64"); >> PM.add(new DataLayout(td)); >> return 0; >> } >> ------------------------------------------ >> >> B) Also suggest me , whether I am implemented a correct way "*DataLayout >> td ("e-p:32:32:32......")" *and "*new DataLayout td" *in the place of >> TargetData.h as I found that TargeyData.h is not found in newer version of >> llvm. Thank you. >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180814/3fa56832/attachment.html>
David Wiberg via llvm-dev
2018-Aug-14 05:11 UTC
[llvm-dev] Error: ‘class llvm::PassManager<llvm::Module>’ has no member named ‘add’
Hi Ratnesh, Did you change your variable declaration to "legacy::PassManager PM;" after adding the include for the legacy pass manager? Best regards David David Den tis 14 aug. 2018 kl 04:10 skrev Ratnesh Tiwari via llvm-dev <llvm-dev at lists.llvm.org>:> > Hi Philip, > I also tried that including file: > #include "llvm/IR/LegacyPassManager.h" > but error remain same. Please help. > > On Tue, Aug 14, 2018, 2:58 AM Philip Pfaffe <philip.pfaffe at gmail.com> wrote: >> >> Hi Ratnesh, >> >> the PassManager used in that example has moved into the legacy namespace: http://llvm.org/doxygen/classllvm_1_1legacy_1_1PassManager.html >> >> Cheers, >> Philip >> >> On Mon, Aug 13, 2018 at 8:49 PM Ratnesh Tiwari via llvm-dev <llvm-dev at lists.llvm.org> wrote: >>> >>> Hi, I am begineer to llvm, implementing a main.cpp from https://github.com/davidar/lljvm/blob/master/backend/main.cpp >>> >>> A) : When I am declaring a command: >>> PassManager PM >>> PM.add(new DataLayout td) >>> >>> It shows error: >>> >error: missing template arguments before ‘PM’ >>> PassManager PM; >>> ^ >>> >main_test.cpp:48:2: error: ‘PM’ was not declared in this scope >>> PM.add(new DataLayout(td)); >>> >>> Keeping in mind the above error, I changed the code as: >>> PassManager<Module> PM >>> PM.add(new DataLayout td) >>> >>> I dont know, whether the above change is the correct one or not. But the error is changed to: >>> >>> >error: ‘class llvm::PassManager<llvm::Module>’ has no member named ‘add’ >>> PM.add(new DataLayout(td)); >>> >>> Here is mine source code: >>> ----------------------------------------------- >>> #include "backened.h" >>> #include <iostream> >>> #include "llvm/Bitcode/BitcodeReader.h" >>> #include "llvm/IR/Function.h" >>> #include "llvm/IR/LLVMContext.h" >>> #include "llvm/IR/Module.h" >>> #include "llvm/Support/CommandLine.h" >>> #include "llvm/Support/ErrorOr.h" >>> #include "llvm/Support/MemoryBuffer.h" >>> #include "llvm/Support/raw_ostream.h" >>> #include "llvm/IR/PassManager.h" >>> #include "llvm/CodeGen/Passes.h" >>> #include "llvm/IR/DataLayout.h" >>> #include <llvm/Transforms/Scalar.h> >>> #include "llvm/IR/LegacyPassManager.h" >>> >>> using namespace llvm; >>> using namespace std; >>> >>> static cl::opt<string> input(cl::Positional, cl::desc("Bitcode File.."),cl::Required); >>> static cl::opt<string> classname("classname",cl::desc("Binary name of the generated class...")); >>> >>> int main(int argc, char** argv) >>> { >>> cl::ParseCommandLineOptions(argc, argv, "Hi.."); >>> LLVMContext context; >>> >>> >>> ErrorOr<unique_ptr<MemoryBuffer>> mb = MemoryBuffer::getFile(input); >>> if(error_code ec = mb.getError()) >>> { >>> errs() << ec.message(); >>> return 1; >>> } >>> >>> Expected<unique_ptr<Module>> m = parseBitcodeFile(mb->get()->getMemBufferRef(),context); >>> if(error_code ec= errorToErrorCode(m.takeError()) ) >>> { >>> PassManager<Module> PM; >>> DataLayout td("e-p:32:32:32" >>> "-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" >>> "-f32:32:32-f64:64:64"); >>> PM.add(new DataLayout(td)); >>> return 0; >>> } >>> ------------------------------------------ >>> >>> B) Also suggest me , whether I am implemented a correct way "DataLayout td ("e-p:32:32:32......")" and "new DataLayout td" in the place of TargetData.h as I found that TargeyData.h is not found in newer version of llvm. Thank you. >>> _______________________________________________ >>> LLVM Developers mailing list >>> llvm-dev at lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Ratnesh Tiwari via llvm-dev
2018-Aug-14 08:57 UTC
[llvm-dev] Error: ‘class llvm::PassManager<llvm::Module>’ has no member named ‘add’
Yes, I did that. Now the error is comming:
error: no matching function for call to ‘llvm::legacy::PassManager::
add(llvm::DataLayout*)’
PM.add(new DataLayout(td));
^
In file included from main_test.cpp:15:0:
/tmp/llvm/include/llvm/IR/LegacyPassManager.h:55:8: note: candidate:
virtual void llvm::legacy::PassManager::add(llvm::Pass*)
void add(Pass *P) override;
^
/tmp/llvm/include/llvm/IR/LegacyPassManager.h:55:8: note: no known
conversion for argument 1 from ‘llvm::DataLayout*’ to ‘llvm::Pass*’
On Tue, Aug 14, 2018 at 10:41 AM, David Wiberg <dwiberg at gmail.com>
wrote:
> Hi Ratnesh,
>
> Did you change your variable declaration to "legacy::PassManager
PM;"
> after adding the include for the legacy pass manager?
>
> Best regards
> David
> David
> Den tis 14 aug. 2018 kl 04:10 skrev Ratnesh Tiwari via llvm-dev
> <llvm-dev at lists.llvm.org>:
> >
> > Hi Philip,
> > I also tried that including file:
> > #include "llvm/IR/LegacyPassManager.h"
> > but error remain same. Please help.
> >
> > On Tue, Aug 14, 2018, 2:58 AM Philip Pfaffe <philip.pfaffe at
gmail.com>
> wrote:
> >>
> >> Hi Ratnesh,
> >>
> >> the PassManager used in that example has moved into the legacy
> namespace: http://llvm.org/doxygen/classllvm_1_1legacy_1_1PassManager.html
> >>
> >> Cheers,
> >> Philip
> >>
> >> On Mon, Aug 13, 2018 at 8:49 PM Ratnesh Tiwari via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >>>
> >>> Hi, I am begineer to llvm, implementing a main.cpp from
> https://github.com/davidar/lljvm/blob/master/backend/main.cpp
> >>>
> >>> A) : When I am declaring a command:
> >>> PassManager PM
> >>> PM.add(new DataLayout td)
> >>>
> >>> It shows error:
> >>> >error: missing template arguments before ‘PM’
> >>> PassManager PM;
> >>> ^
> >>> >main_test.cpp:48:2: error: ‘PM’ was not declared in this
scope
> >>> PM.add(new DataLayout(td));
> >>>
> >>> Keeping in mind the above error, I changed the code as:
> >>> PassManager<Module> PM
> >>> PM.add(new DataLayout td)
> >>>
> >>> I dont know, whether the above change is the correct one or
not. But
> the error is changed to:
> >>>
> >>> >error: ‘class llvm::PassManager<llvm::Module>’ has
no member named
> ‘add’
> >>> PM.add(new DataLayout(td));
> >>>
> >>> Here is mine source code:
> >>> -----------------------------------------------
> >>> #include "backened.h"
> >>> #include <iostream>
> >>> #include "llvm/Bitcode/BitcodeReader.h"
> >>> #include "llvm/IR/Function.h"
> >>> #include "llvm/IR/LLVMContext.h"
> >>> #include "llvm/IR/Module.h"
> >>> #include "llvm/Support/CommandLine.h"
> >>> #include "llvm/Support/ErrorOr.h"
> >>> #include "llvm/Support/MemoryBuffer.h"
> >>> #include "llvm/Support/raw_ostream.h"
> >>> #include "llvm/IR/PassManager.h"
> >>> #include "llvm/CodeGen/Passes.h"
> >>> #include "llvm/IR/DataLayout.h"
> >>> #include <llvm/Transforms/Scalar.h>
> >>> #include "llvm/IR/LegacyPassManager.h"
> >>>
> >>> using namespace llvm;
> >>> using namespace std;
> >>>
> >>> static cl::opt<string> input(cl::Positional,
cl::desc("Bitcode
> File.."),cl::Required);
> >>> static cl::opt<string>
classname("classname",cl::desc("Binary name of
> the generated class..."));
> >>>
> >>> int main(int argc, char** argv)
> >>> {
> >>> cl::ParseCommandLineOptions(argc, argv,
"Hi..");
> >>> LLVMContext context;
> >>>
> >>>
> >>> ErrorOr<unique_ptr<MemoryBuffer>> mb >
MemoryBuffer::getFile(input);
> >>> if(error_code ec = mb.getError())
> >>> {
> >>> errs() << ec.message();
> >>> return 1;
> >>> }
> >>>
> >>> Expected<unique_ptr<Module>> m =
parseBitcodeFile(mb->get()->
> getMemBufferRef(),context);
> >>> if(error_code ec= errorToErrorCode(m.takeError()) )
> >>> {
> >>> PassManager<Module> PM;
> >>> DataLayout td("e-p:32:32:32"
> >>>
"-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64"
> >>> "-f32:32:32-f64:64:64");
> >>> PM.add(new DataLayout(td));
> >>> return 0;
> >>> }
> >>> ------------------------------------------
> >>>
> >>> B) Also suggest me , whether I am implemented a correct way
> "DataLayout td ("e-p:32:32:32......")" and "new
DataLayout td" in the
> place of TargetData.h as I found that TargeyData.h is not found in newer
> version of llvm. Thank you.
> >>> _______________________________________________
> >>> LLVM Developers mailing list
> >>> llvm-dev at lists.llvm.org
> >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20180814/28f6c573/attachment.html>