Incorporate feedback from Chris:
authorReid Spencer <rspencer@reidspencer.com>
Tue, 26 Apr 2005 03:26:15 +0000 (03:26 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 26 Apr 2005 03:26:15 +0000 (03:26 +0000)
commit43e0baece37f87c4aa5e658c9dbc61edf0c5e779
treea89899fccff7ac7e8c3ed3a85a5443b4803f7c78
parentc8beae2b6d42664378f712895997486fe1f06453
Incorporate feedback from Chris:
* Change signatures of OptimizeCall and ValidateCalledFunction so they are
  non-const, allowing the optimization object to be modified. This is in
  support of caching things used across multiple calls.
* Provide two functions for constructing and caching function types
* Modify the StrCatOptimization to cache Function objects for strlen and
  llvm.memcpy so it doesn't regenerate them on each call site. Make sure
  these are invalidated each time we start the pass.
* Handle both a GEP Instruction and a GEP ConstantExpr
* Add additional checks to make sure we really are dealing with an arary of
  sbyte and that all the element initializers are ConstantInt or
  ConstantExpr that reduce to ConstantInt.
* Make sure the GlobalVariable is constant!
* Don't use ConstantArray::getString as it can fail and it doesn't give us
  the right thing. We must check for null bytes in the middle of the array.
* Use llvm.memcpy instead of memcpy so we can factor alignment into it.
* Don't use void* types in signatures, replace with sbyte* instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21555 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/IPO/SimplifyLibCalls.cpp