uint64_t Offset = 0);
// FIXME: Remove this.
- bool GetConstantStringInfo(const Value *V, std::string &Str,
- uint64_t Offset = 0);
+ // bool GetConstantStringInfo(const Value *V, std::string &Str,
+ // uint64_t Offset = 0);
/// GetStringLength - If we can compute the length of the string pointed to by
/// the specified pointer, return 'len+1'. If we can't, return 0.
}
-// FIXME: Remove this.
-bool llvm::GetConstantStringInfo(const Value *V, std::string &Str,
- uint64_t Offset) {
- StringRef Tmp;
- if (!getConstantStringInfo(V, Tmp, Offset))
- return false;
- Str = Tmp.str();
- return true;
-}
-
/// getConstantStringInfo - This function computes the length of a
/// null-terminated C string pointed to by V. If successful, it returns true
/// and returns the string in Str. If unsuccessful, it returns false.
/// string ptr.
static SDValue getMemsetStringVal(EVT VT, DebugLoc dl, SelectionDAG &DAG,
const TargetLowering &TLI,
- std::string &Str, unsigned Offset) {
+ StringRef Str, unsigned Offset) {
// Handle vector with all elements zero.
if (Str.empty()) {
if (VT.isInteger())
/// isMemSrcFromString - Returns true if memcpy source is a string constant.
///
-static bool isMemSrcFromString(SDValue Src, std::string &Str) {
+static bool isMemSrcFromString(SDValue Src, StringRef &Str) {
unsigned SrcDelta = 0;
GlobalAddressSDNode *G = NULL;
if (Src.getOpcode() == ISD::GlobalAddress)
return false;
if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(G->getGlobal()))
- if (GetConstantStringInfo(GV, Str, SrcDelta)) {
- // The nul can also be read.
- Str.push_back(0);
+ if (getConstantStringInfo(GV, Str, SrcDelta))
return true;
- }
return false;
}
unsigned SrcAlign = DAG.InferPtrAlignment(Src);
if (Align > SrcAlign)
SrcAlign = Align;
- std::string Str;
+ StringRef Str;
bool CopyFromStr = isMemSrcFromString(Src, Str);
bool isZeroStr = CopyFromStr && Str.empty();
unsigned Limit = AlwaysInline ? ~0U : TLI.getMaxStoresPerMemcpy(OptSize);