summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp46
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h1
2 files changed, 0 insertions, 47 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 26c81e9768d..27ee96dfedf 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -6039,48 +6039,6 @@ bool SelectionDAGBuilder::visitMemChrCall(const CallInst &I) {
return false;
}
-///
-/// visitMemPCpyCall -- lower a mempcpy call as a memcpy followed by code to
-/// to adjust the dst pointer by the size of the copied memory.
-bool SelectionDAGBuilder::visitMemPCpyCall(const CallInst &I) {
-
- unsigned int NumOperands = I.getNumArgOperands();
- if (NumOperands < 3 || NumOperands > 5)
- return false;
-
- SDValue Dst = getValue(I.getArgOperand(0));
- SDValue Src = getValue(I.getArgOperand(1));
- SDValue Size = getValue(I.getArgOperand(2));
-
- unsigned Align = 0;
- if (NumOperands >= 4)
- Align = cast<ConstantInt>(I.getArgOperand(3))->getZExtValue();
- if (!Align)
- Align = 1; // @llvm.memcpy defines 0 and 1 to both mean no alignment.
-
- bool isVol = false;
- if (NumOperands == 5)
- isVol = cast<ConstantInt>(I.getArgOperand(4))->getZExtValue();
-
- SDLoc sdl = getCurSDLoc();
- // In the mempcpy context we need to pass in a false value for isTailCall
- // because the return pointer needs to be adjusted by the size of
- // the copied memory.
- SDValue MC = DAG.getMemcpy(getRoot(), sdl, Dst, Src, Size, Align, isVol,
- false, /*isTailCall=*/false,
- MachinePointerInfo(I.getArgOperand(0)),
- MachinePointerInfo(I.getArgOperand(1)));
- assert(MC.getNode() != nullptr &&
- "** memcpy should not be lowered as TailCall in mempcpy context **");
- DAG.setRoot(MC);
-
- // Adjust return pointer to point just past the last dst byte.
- SDValue DstPlusSize = DAG.getNode(ISD::ADD, sdl, Dst.getValueType(),
- Dst, Size);
- setValue(&I, DstPlusSize);
- return true;
-}
-
/// visitStrCpyCall -- See if we can lower a strcpy or stpcpy call into an
/// optimized form. If so, return true and lower it, otherwise return false
/// and it will be lowered like a normal call.
@@ -6371,10 +6329,6 @@ void SelectionDAGBuilder::visitCall(const CallInst &I) {
if (visitMemCmpCall(I))
return;
break;
- case LibFunc::mempcpy:
- if (visitMemPCpyCall(I))
- return;
- break;
case LibFunc::memchr:
if (visitMemChrCall(I))
return;
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
index 18c39d0fccb..b9888ae8763 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
@@ -885,7 +885,6 @@ private:
void visitPHI(const PHINode &I);
void visitCall(const CallInst &I);
bool visitMemCmpCall(const CallInst &I);
- bool visitMemPCpyCall(const CallInst &I);
bool visitMemChrCall(const CallInst &I);
bool visitStrCpyCall(const CallInst &I, bool isStpcpy);
bool visitStrCmpCall(const CallInst &I);
OpenPOWER on IntegriCloud