[LLVMdev] How to prevent duplication of function calls?

Reid Kleckner reid.kleckner at gmail.com
Sat Apr 16 11:32:40 PDT 2011


This came up a long time ago, but I'm not sure what the resolution was:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-October/026312.html

There's also TID::isNotDuplicable:
http://llvm.org/docs/doxygen/html/classllvm_1_1TargetInstrDesc.html#ab05b074805f22503828b5b625d437f3a

I don't know enough about LLVM's backend to say if you can get that on
an intrinsic.

Reid

On Thu, Apr 14, 2011 at 5:24 PM, Dmitry Denisenko <DDENISEN at altera.com> wrote:
> Hello,
>
>
>
> Is it possible to prevent duplication of call sites for specific functions
> (while still maintaining –O3 optimization level)? For example, the following
> C code:
>
>
>
> ------------------
>
> if (cond1) a=2;
>
> llvm.memory.barrier(...);
>
> ------------------
>
>
>
> is turned by clang with -O2 into something like this:
>
>
>
> ------------------
>
> if (cond1)
>
>           a=2;
>
>           llvm.memory.barrier(...);
>
> else
>
>           llvm.memory.barrier(...);
>
> ------------------
>
>
>
> We’re doing C to HDL compilation with LLVM. Having multiple locations that
> call llvm.memory.barrier(...) would cause complications to generated
> hardware.
>
>
>
> So far, I can think of only two solutions. One is to add support for
> something like “noclone” attribute and update all optimizations to obey it.
> The other is to re-merge the calls as a final pass. Any better ideas?
>
>
>
> Thank you,
>
> Dmitry
>
>
>
> ________________________________
> Confidentiality Notice.
> This message may contain information that is confidential or otherwise
> protected from disclosure. If you are not the intended recipient, you are
> hereby notified that any use, disclosure, dissemination, distribution, or
> copying of this message, or any attachments, is strictly prohibited. If you
> have received this message in error, please advise the sender by reply
> e-mail, and delete the message and any attachments. Thank you.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>




More information about the llvm-dev mailing list