From afb514a7b49c72f359155319deab946f2196fcbc Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 12 Jan 2008 18:58:46 +0000 Subject: clarify a note llvm-svn: 45914 --- llvm/lib/Target/README.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Target') diff --git a/llvm/lib/Target/README.txt b/llvm/lib/Target/README.txt index f39d8b2a244..623c86f3555 100644 --- a/llvm/lib/Target/README.txt +++ b/llvm/lib/Target/README.txt @@ -610,6 +610,14 @@ pointer parameters for alias analysis. Some ideas: arguments when the function is inlined. These functions can be inferred by various analysis passes such as the -globalsmodrefaa pass. +globalsmodrefaa pass. Note that getting #2 right is actually really tricky. +Consider this code: + +struct S; S G; +void caller(S byvalarg) { G.field = 1; ... } +void callee() { caller(G); } + +The fact that the caller does not modify byval arg is not enough, we need +to know that it doesn't modify G either. This is very tricky. //===---------------------------------------------------------------------===// -- cgit v1.2.3