n3v3rm03 via llvm-dev
2019-Jan-18 10:57 UTC
[llvm-dev] Can't find symbol from llvm backend
Hi, I am new to llvm. I create a global variable called "test_llvm_var" in the front end function pass like this: new GlobalVariable(*m, tmp->getType(), true, llvm::GlobalValue::ExternalLinkage, tmp, "test_llvm_var"); where tmp is a function. Then I tried to access this global variable in the back end MachineFunctionPass like this: MCContext& MCC = MF.getContext(); MCSymbol* MCS = MCC.lookupSymbol("test_llvm_var"); if (MCS == NULL) { errs() << ">>> MCSymbol is null\n"; } else { MCS->dump(); } (MF is a MachineFunction). However I always get MCS==NULL, there is no symbol called test_llvm_var in the backend. Am I doing something wrong? What I would like to do is to modify the global variable's value from the backend pass. Any help would be appreciated. Thank you! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190118/348aad8e/attachment.html>
Do you have a use of the new variable as well? If not, it might be optimized out between the point where you create it and your MachineFunction pass. --paulr From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of n3v3rm03 via llvm-dev Sent: Friday, January 18, 2019 5:57 AM To: llvm-dev at lists.llvm.org Subject: [llvm-dev] Can't find symbol from llvm backend Hi, I am new to llvm. I create a global variable called "test_llvm_var" in the front end function pass like this: new GlobalVariable(*m, tmp->getType(), true, llvm::GlobalValue::ExternalLinkage, tmp, "test_llvm_var"); where tmp is a function. Then I tried to access this global variable in the back end MachineFunctionPass like this: MCContext& MCC = MF.getContext(); MCSymbol* MCS = MCC.lookupSymbol("test_llvm_var"); if (MCS == NULL) { errs() << ">>> MCSymbol is null\n"; } else { MCS->dump(); } (MF is a MachineFunction). However I always get MCS==NULL, there is no symbol called test_llvm_var in the backend. Am I doing something wrong? What I would like to do is to modify the global variable's value from the backend pass. Any help would be appreciated. Thank you! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190118/190931f1/attachment-0001.html>
n3v3rm03 via llvm-dev
2019-Jan-19 06:52 UTC
[llvm-dev] Can't find symbol from llvm backend
No, I don't. But I’m sure it is not optimized because I can see this variable in the final binary file emitted. Do you mean if I don’t refer to this variable in the front end, then I can’t see it in the backend? (although it’s in the final binary file) Thank you! 2019年1月19日(土) 2:00 <paul.robinson at sony.com>:> Do you have a use of the new variable as well? If not, it might be > optimized out between the point where you create it and your > MachineFunction pass. > > --paulr > > > > *From:* llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] *On Behalf Of *n3v3rm03 > via llvm-dev > *Sent:* Friday, January 18, 2019 5:57 AM > *To:* llvm-dev at lists.llvm.org > *Subject:* [llvm-dev] Can't find symbol from llvm backend > > > > Hi, I am new to llvm. > > I create a global variable called "test_llvm_var" in the front end > function pass like this: > > > > new GlobalVariable(*m, tmp->getType(), true, > llvm::GlobalValue::ExternalLinkage, tmp, "test_llvm_var"); > > > > where tmp is a function. > > > > Then I tried to access this global variable in the back end > MachineFunctionPass like this: > > > > MCContext& MCC = MF.getContext(); > MCSymbol* MCS = MCC.lookupSymbol("test_llvm_var"); > if (MCS == NULL) { > errs() << ">>> MCSymbol is null\n"; > } > else { > MCS->dump(); > } > > > > (MF is a MachineFunction). > > > > However I always get MCS==NULL, there is no symbol called test_llvm_var in > the backend. > > > > Am I doing something wrong? What I would like to do is to modify the > global variable's value from the backend pass. > > > > Any help would be appreciated. > > Thank you! >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190119/9b0ae764/attachment.html>