diff lib/Target/X86/X86CallLowering.h @ 121:803732b1fca8

LLVM 5.0
author kono
date Fri, 27 Oct 2017 17:07:41 +0900
parents 1172e4bd9c6f
children
line wrap: on
line diff
--- a/lib/Target/X86/X86CallLowering.h	Fri Nov 25 19:14:25 2016 +0900
+++ b/lib/Target/X86/X86CallLowering.h	Fri Oct 27 17:07:41 2017 +0900
@@ -1,4 +1,4 @@
-//===-- llvm/lib/Target/X86/X86CallLowering.h - Call lowering -----===//
+//===- llvm/lib/Target/X86/X86CallLowering.h - Call lowering ----*- C++ -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -6,24 +6,24 @@
 // License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
-///
+//
 /// \file
 /// This file describes how to lower LLVM calls to machine code calls.
-///
+//
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIB_TARGET_X86_X86CALLLOWERING
-#define LLVM_LIB_TARGET_X86_X86CALLLOWERING
+#ifndef LLVM_LIB_TARGET_X86_X86CALLLOWERING_H
+#define LLVM_LIB_TARGET_X86_X86CALLLOWERING_H
 
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/CodeGen/GlobalISel/CallLowering.h"
+#include <functional>
 
 namespace llvm {
 
-class Function;
-class MachineIRBuilder;
+class DataLayout;
+class MachineRegisterInfo;
 class X86TargetLowering;
-class Value;
 
 class X86CallLowering : public CallLowering {
 public:
@@ -34,6 +34,21 @@
 
   bool lowerFormalArguments(MachineIRBuilder &MIRBuilder, const Function &F,
                             ArrayRef<unsigned> VRegs) const override;
+
+  bool lowerCall(MachineIRBuilder &MIRBuilder, CallingConv::ID CallConv,
+                 const MachineOperand &Callee, const ArgInfo &OrigRet,
+                 ArrayRef<ArgInfo> OrigArgs) const override;
+
+private:
+  /// A function of this type is used to perform value split action.
+  using SplitArgTy = std::function<void(ArrayRef<unsigned>)>;
+
+  bool splitToValueTypes(const ArgInfo &OrigArgInfo,
+                         SmallVectorImpl<ArgInfo> &SplitArgs,
+                         const DataLayout &DL, MachineRegisterInfo &MRI,
+                         SplitArgTy SplitArg) const;
 };
-} // End of namespace llvm;
-#endif
+
+} // end namespace llvm
+
+#endif // LLVM_LIB_TARGET_X86_X86CALLLOWERING_H