[llvm-dev] Informing transformation passes of non-concurrent memory accesses

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Tue Mar 14 04:14:58 PDT 2017


On 03/14/2017 05:56 AM, Andreas Scherman via llvm-dev wrote:
> Hi!
>
> The example in the docs[1] states that the LLVM concurrency model does 
> not allow the hoisting of loads and introduction of local variables 
> due to another thread potentially altering the value whilst running 
> the function. Given that I have analysis which shows that the memory 
> location of variable /x /can not be concurrently accessed -- how would 
> I inform the LLVM transformation passes of this information?

You'll need to modify the LICM code to use this information (look for 
calls to isSimple()).

Can you describe what your analysis does?

  -Hal

>
> I tried injecting this information in to the AliasAnalysis under 
> getModRefInfo() by returning NoModref for the memory locations I knew 
> not to be accessed concurrently. However, it seemed that the usages of 
> the variables was not respected in that case, such that we could 
> reorder variables and change the semantics of the program.
>
> Thanks in advance,
>
> Andreas
>
> [1]: http://llvm.org/docs/Atomics.html#optimization-outside-atomic
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170314/8b8b1d62/attachment.html>


More information about the llvm-dev mailing list