diff options
| author | Torok Edwin <edwintorok@gmail.com> | 2009-09-24 18:33:42 +0000 |
|---|---|---|
| committer | Torok Edwin <edwintorok@gmail.com> | 2009-09-24 18:33:42 +0000 |
| commit | 21bd8c9fc5e3a17b0d593c5b6f9c66c353a2eed8 (patch) | |
| tree | 7d1ef6b3121dad4e1bbc50df007e9e7c7348e1eb /llvm/lib/Transforms/Scalar | |
| parent | 46cd46731082e7ad6cd3901e2a13f68d7a774cab (diff) | |
| download | bcm5719-llvm-21bd8c9fc5e3a17b0d593c5b6f9c66c353a2eed8.tar.gz bcm5719-llvm-21bd8c9fc5e3a17b0d593c5b6f9c66c353a2eed8.zip | |
Constant propagating byval pointer is safe if function is readonly.
llvm-svn: 82700
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/SCCP.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp index bf9ec0e4adf..ad4bcc942d0 100644 --- a/llvm/lib/Transforms/Scalar/SCCP.cpp +++ b/llvm/lib/Transforms/Scalar/SCCP.cpp @@ -1267,7 +1267,7 @@ CallOverdefined: for (Function::arg_iterator AI = F->arg_begin(), E = F->arg_end(); AI != E; ++AI, ++CAI) { LatticeVal &IV = ValueState[AI]; - if (AI->hasByValAttr() && isa<PointerType>(AI->getType())) { + if (AI->hasByValAttr() && !F->onlyReadsMemory()) { IV.markOverdefined(); continue; } |

