[llvm-dev] Can't find symbol from llvm backend

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Fri Jan 18 23:11:53 PST 2019


I'm not sure, but I think the MCSymbol won't exist until the AsmPrinter
pass runs at the end of the codegen pipeline.

~Craig


On Fri, Jan 18, 2019 at 11:02 PM n3v3rm03 via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> 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!
>
> On Sat, Jan 19, 2019 at 3:52 PM n3v3rm03 <n3v3rm03 at gmail.com> wrote:
>
>> 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!
>>>
>> _______________________________________________
> 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/20190118/3906befa/attachment-0001.html>


More information about the llvm-dev mailing list