mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-28 23:43:50 +00:00
1469e29334
The new solution is to not use this lowering if there are any dynamic allocas in the current function. We know up front if there are dynamic allocas, but we don't know if we'll need to create stack temporaries with large alignment during lowering. Conservatively assume that we will need such temporaries. Reviewed By: hans Differential Revision: http://reviews.llvm.org/D5128 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216775 91177308-0d34-0410-b5e6-96231b3b80d8
54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
//===-- X86SelectionDAGInfo.h - X86 SelectionDAG Info -----------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines the X86 subclass for TargetSelectionDAGInfo.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H
|
|
#define LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H
|
|
|
|
#include "llvm/Target/TargetSelectionDAGInfo.h"
|
|
|
|
namespace llvm {
|
|
|
|
class X86TargetLowering;
|
|
class X86TargetMachine;
|
|
class X86Subtarget;
|
|
|
|
class X86SelectionDAGInfo : public TargetSelectionDAGInfo {
|
|
/// Returns true if it is possible for the base register to conflict with the
|
|
/// given set of clobbers for a memory intrinsic.
|
|
bool isBaseRegConflictPossible(SelectionDAG &DAG,
|
|
ArrayRef<unsigned> ClobberSet) const;
|
|
|
|
public:
|
|
explicit X86SelectionDAGInfo(const DataLayout &DL);
|
|
~X86SelectionDAGInfo();
|
|
|
|
SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc dl,
|
|
SDValue Chain,
|
|
SDValue Dst, SDValue Src,
|
|
SDValue Size, unsigned Align,
|
|
bool isVolatile,
|
|
MachinePointerInfo DstPtrInfo) const override;
|
|
|
|
SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc dl,
|
|
SDValue Chain,
|
|
SDValue Dst, SDValue Src,
|
|
SDValue Size, unsigned Align,
|
|
bool isVolatile, bool AlwaysInline,
|
|
MachinePointerInfo DstPtrInfo,
|
|
MachinePointerInfo SrcPtrInfo) const override;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|