mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-05 10:17:37 +00:00
Implement the -fno-builtin option in the front-end, not in the back-end.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56900 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
70695fee51
commit
6158d8492c
@ -1049,8 +1049,7 @@ public:
|
||||
SDValue Chain,
|
||||
SDValue Op1, SDValue Op2,
|
||||
SDValue Op3, unsigned Align,
|
||||
const Value *DstSV, uint64_t DstOff,
|
||||
bool NoBuiltin = false) {
|
||||
const Value *DstSV, uint64_t DstOff) {
|
||||
return SDValue();
|
||||
}
|
||||
|
||||
|
@ -41,11 +41,6 @@
|
||||
#include <cmath>
|
||||
using namespace llvm;
|
||||
|
||||
static cl::opt<bool>
|
||||
NoBuiltin("no-builtin", cl::init(false),
|
||||
cl::desc("Don't recognize built-in functions that do not begin "
|
||||
"with `__builtin_' as prefix"));
|
||||
|
||||
/// makeVTList - Return an instance of the SDVTList struct initialized with the
|
||||
/// specified members.
|
||||
static SDVTList makeVTList(const MVT *VTs, unsigned NumVTs) {
|
||||
@ -3195,7 +3190,7 @@ SDValue SelectionDAG::getMemset(SDValue Chain, SDValue Dst,
|
||||
// code. If the target chooses to do this, this is the next best.
|
||||
SDValue Result =
|
||||
TLI.EmitTargetCodeForMemset(*this, Chain, Dst, Src, Size, Align,
|
||||
DstSV, DstSVOff, NoBuiltin);
|
||||
DstSV, DstSVOff);
|
||||
if (Result.getNode())
|
||||
return Result;
|
||||
|
||||
|
@ -5132,8 +5132,7 @@ X86TargetLowering::EmitTargetCodeForMemset(SelectionDAG &DAG,
|
||||
SDValue Dst, SDValue Src,
|
||||
SDValue Size, unsigned Align,
|
||||
const Value *DstSV,
|
||||
uint64_t DstSVOff,
|
||||
bool NoBuiltin) {
|
||||
uint64_t DstSVOff) {
|
||||
ConstantSDNode *ConstantSize = dyn_cast<ConstantSDNode>(Size);
|
||||
|
||||
// If not DWORD aligned or size is more than the threshold, call the library.
|
||||
@ -5148,24 +5147,22 @@ X86TargetLowering::EmitTargetCodeForMemset(SelectionDAG &DAG,
|
||||
// Check to see if there is a specialized entry-point for memory zeroing.
|
||||
ConstantSDNode *V = dyn_cast<ConstantSDNode>(Src);
|
||||
|
||||
if (!NoBuiltin) {
|
||||
if (const char *bzeroEntry = V &&
|
||||
V->isNullValue() ? Subtarget->getBZeroEntry() : 0) {
|
||||
MVT IntPtr = getPointerTy();
|
||||
const Type *IntPtrTy = TD->getIntPtrType();
|
||||
TargetLowering::ArgListTy Args;
|
||||
TargetLowering::ArgListEntry Entry;
|
||||
Entry.Node = Dst;
|
||||
Entry.Ty = IntPtrTy;
|
||||
Args.push_back(Entry);
|
||||
Entry.Node = Size;
|
||||
Args.push_back(Entry);
|
||||
std::pair<SDValue,SDValue> CallResult =
|
||||
LowerCallTo(Chain, Type::VoidTy, false, false, false, false,
|
||||
CallingConv::C, false,
|
||||
DAG.getExternalSymbol(bzeroEntry, IntPtr), Args, DAG);
|
||||
return CallResult.second;
|
||||
}
|
||||
if (const char *bzeroEntry = V &&
|
||||
V->isNullValue() ? Subtarget->getBZeroEntry() : 0) {
|
||||
MVT IntPtr = getPointerTy();
|
||||
const Type *IntPtrTy = TD->getIntPtrType();
|
||||
TargetLowering::ArgListTy Args;
|
||||
TargetLowering::ArgListEntry Entry;
|
||||
Entry.Node = Dst;
|
||||
Entry.Ty = IntPtrTy;
|
||||
Args.push_back(Entry);
|
||||
Entry.Node = Size;
|
||||
Args.push_back(Entry);
|
||||
std::pair<SDValue,SDValue> CallResult =
|
||||
LowerCallTo(Chain, Type::VoidTy, false, false, false, false,
|
||||
CallingConv::C, false,
|
||||
DAG.getExternalSymbol(bzeroEntry, IntPtr), Args, DAG);
|
||||
return CallResult.second;
|
||||
}
|
||||
|
||||
// Otherwise have the target-independent code call memset.
|
||||
|
@ -578,8 +578,7 @@ namespace llvm {
|
||||
SDValue Chain,
|
||||
SDValue Dst, SDValue Src,
|
||||
SDValue Size, unsigned Align,
|
||||
const Value *DstSV, uint64_t DstSVOff,
|
||||
bool NoBuiltin);
|
||||
const Value *DstSV, uint64_t DstSVOff);
|
||||
SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG,
|
||||
SDValue Chain,
|
||||
SDValue Dst, SDValue Src,
|
||||
|
Loading…
Reference in New Issue
Block a user