summaryrefslogtreecommitdiff
path: root/lib/Target/PIC16/PIC16ISelLowering.h
diff options
context:
space:
mode:
authorSanjiv Gupta <sanjiv.gupta@microchip.com>2009-04-02 17:42:00 +0000
committerSanjiv Gupta <sanjiv.gupta@microchip.com>2009-04-02 17:42:00 +0000
commitb84d5a476a8e678dbdeef848b22ea22c24632e11 (patch)
treefd84b914b67bc3534e7402c1579ca077602e3f6d /lib/Target/PIC16/PIC16ISelLowering.h
parentd0dfbe096dd71ca4d652784705584876f8b18250 (diff)
downloadllvm-b84d5a476a8e678dbdeef848b22ea22c24632e11.tar.gz
llvm-b84d5a476a8e678dbdeef848b22ea22c24632e11.tar.bz2
llvm-b84d5a476a8e678dbdeef848b22ea22c24632e11.tar.xz
Params are not being generated as static globals now. The caller passes them onto the callee's stack directly and the callee loads the argvals from its own stack. Clang generated frameindexes validatd by recalculating the stack as if all frameindexes represent 1-byte slots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68327 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PIC16/PIC16ISelLowering.h')
-rw-r--r--lib/Target/PIC16/PIC16ISelLowering.h16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/Target/PIC16/PIC16ISelLowering.h b/lib/Target/PIC16/PIC16ISelLowering.h
index 75e824a0a6..b2a89db3ea 100644
--- a/lib/Target/PIC16/PIC16ISelLowering.h
+++ b/lib/Target/PIC16/PIC16ISelLowering.h
@@ -29,6 +29,10 @@ namespace llvm {
Lo, // Low 8-bits of GlobalAddress.
Hi, // High 8-bits of GlobalAddress.
PIC16Load,
+ PIC16LdArg, // This is replica of PIC16Load but used to load function
+ // arguments and is being used for facilitating for some
+ // store removal optimizations.
+
PIC16LdWF,
PIC16Store,
PIC16StWF,
@@ -103,17 +107,17 @@ namespace llvm {
SDValue ExpandStore(SDNode *N, SelectionDAG &DAG);
SDValue ExpandLoad(SDNode *N, SelectionDAG &DAG);
- //SDValue ExpandAdd(SDNode *N, SelectionDAG &DAG);
SDValue ExpandGlobalAddress(SDNode *N, SelectionDAG &DAG);
SDValue ExpandExternalSymbol(SDNode *N, SelectionDAG &DAG);
SDValue ExpandFrameIndex(SDNode *N, SelectionDAG &DAG);
SDValue PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const;
SDValue PerformPIC16LoadCombine(SDNode *N, DAGCombinerInfo &DCI) const;
+ SDValue PerformStoreCombine(SDNode *N, DAGCombinerInfo &DCI) const;
private:
- // If the Node is a BUILD_PAIR representing representing an Address
- // then this function will return true
+ // If the Node is a BUILD_PAIR representing a direct Address,
+ // then this function will return true.
bool isDirectAddress(const SDValue &Op);
// If the Node is a DirectAddress in ROM_SPACE then this
@@ -149,14 +153,14 @@ namespace llvm {
// Extending the LIB Call framework of LLVM
- // To hold the names of PIC16Libcalls
+ // to hold the names of PIC16Libcalls.
const char *PIC16LibcallNames[PIC16ISD::PIC16UnknownCall];
- // To set and retrieve the lib call names
+ // To set and retrieve the lib call names.
void setPIC16LibcallName(PIC16ISD::PIC16Libcall Call, const char *Name);
const char *getPIC16LibcallName(PIC16ISD::PIC16Libcall Call);
- // Make PIC16 Libcall
+ // Make PIC16 Libcall.
SDValue MakePIC16Libcall(PIC16ISD::PIC16Libcall Call, MVT RetVT,
const SDValue *Ops, unsigned NumOps, bool isSigned,
SelectionDAG &DAG, DebugLoc dl);