[PATCH] D12838: [GlobalsAA] Teach GlobalsAA about memory intrinsics

James Molloy via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 14 07:46:13 PDT 2015


jmolloy created this revision.
jmolloy added reviewers: chandlerc, majnemer, hfinkel.
jmolloy added a subscriber: llvm-commits.
jmolloy set the repository for this revision to rL LLVM.

MemCpyOptimizer can turn non-escaping stores of globals into calls to intrinsics like llvm.memcpy/llvm/memset. This confuses GlobalsAA, which knows the global can't escape and so returns NoModRef when queried, when obviously a memcpy/memset call does indeed reference and modify its arguments.

This patch teaches GlobalsAA about the LLVM memory intrinsics that can be created by MemCpyOptimizer. If needed, we can extend it to support other loads/stores like @llvm.masked.store.

This addresses PR24800, PR24801, and PR24802

Repository:
  rL LLVM

http://reviews.llvm.org/D12838

Files:
  include/llvm/Analysis/GlobalsModRef.h
  lib/Analysis/GlobalsModRef.cpp
  test/Analysis/GlobalsModRef/memset-escape.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12838.34668.patch
Type: text/x-patch
Size: 4534 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150914/cae5e776/attachment.bin>


More information about the llvm-commits mailing list