back out 104862/104869. Can reuse stacksave after all. Very cool.
authorJim Grosbach <grosbach@apple.com>
Thu, 27 May 2010 23:11:57 +0000 (23:11 +0000)
committerJim Grosbach <grosbach@apple.com>
Thu, 27 May 2010 23:11:57 +0000 (23:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104897 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/ISDOpcodes.h
include/llvm/Intrinsics.td
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h

index fdb9bfd6554a3cdbccd3797385366c9543a770c9..a5e9dd5fe84a2b9442bfad7b6c33602b92cd60fd 100644 (file)
@@ -72,9 +72,6 @@ namespace ISD {
     // parent's frame or return address, and so on.
     FRAMEADDR, RETURNADDR,
 
-    // STACKADDR - The current stack pointer address.
-    STACKADDR,
-
     // FRAME_TO_ARGS_OFFSET - This node represents offset from frame pointer to
     // first (possible) on-stack argument. This is needed for correct stack
     // adjustment during unwind.
index 42c16c34ac446b2a93f79a35a28171dbe5efc039..444f514d59beed4dd54b770ab42b4c3d6166e625 100644 (file)
@@ -197,13 +197,12 @@ def int_gcwrite : Intrinsic<[],
 def int_returnaddress : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty], [IntrNoMem]>;
 def int_frameaddress  : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty], [IntrNoMem]>;
 
-// Note: we treat stacksave/stackrestore and stackaddr as writemem because we
-// don't otherwise model their dependencies on allocas.
+// Note: we treat stacksave/stackrestore as writemem because we don't otherwise
+// model their dependencies on allocas.
 def int_stacksave     : Intrinsic<[llvm_ptr_ty]>,
                         GCCBuiltin<"__builtin_stack_save">;
 def int_stackrestore  : Intrinsic<[], [llvm_ptr_ty]>,
                         GCCBuiltin<"__builtin_stack_restore">;
-def int_stackaddress  : Intrinsic<[llvm_ptr_ty], []>;
 
 // IntrWriteArgMem is more pessimistic than strictly necessary for prefetch,
 // however it does conveniently prevent the prefetch from being reordered
index a0cd23290585a446a012d8354d1006dda0ffc855..fbe601f2db09ec338fea20dd9f305e3fb5a47525 100644 (file)
@@ -3756,10 +3756,6 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
     setValue(&I, DAG.getNode(ISD::FRAMEADDR, dl, TLI.getPointerTy(),
                              getValue(I.getOperand(1))));
     return 0;
-  case Intrinsic::stackaddress:
-    setValue(&I, DAG.getNode(ISD::STACKADDR, dl, TLI.getPointerTy(), getRoot(),
-                             getValue(I.getOperand(1))));
-    return 0;
   case Intrinsic::setjmp:
     return "_setjmp"+!TLI.usesUnderscoreSetJmp();
   case Intrinsic::longjmp:
index f6037c0c83922036e3ccc677af06a07be92db4d0..b8126a3c5d1801196cb17d3e3124954fbc843df2 100644 (file)
@@ -2183,13 +2183,6 @@ SDValue ARMTargetLowering::LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
   return FrameAddr;
 }
 
-SDValue ARMTargetLowering::LowerSTACKADDR(SDValue Op, SelectionDAG &DAG) const {
-  EVT VT = Op.getValueType();
-  DebugLoc dl = Op.getDebugLoc();  // FIXME probably not meaningful
-  SDValue StackAddr = DAG.getCopyFromReg(DAG.getEntryNode(), dl, ARM::SP, VT);
-  return StackAddr;
-}
-
 /// ExpandBIT_CONVERT - If the target supports VFP, this function is called to
 /// expand a bit convert where either the source or destination type is i64 to
 /// use a VMOVDRR or VMOVRRD node.  This should not be done when the non-i64
@@ -3194,7 +3187,6 @@ SDValue ARMTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
   case ISD::FCOPYSIGN:     return LowerFCOPYSIGN(Op, DAG);
   case ISD::RETURNADDR:    return LowerRETURNADDR(Op, DAG);
   case ISD::FRAMEADDR:     return LowerFRAMEADDR(Op, DAG);
-  case ISD::STACKADDR:     return LowerSTACKADDR(Op, DAG);
   case ISD::GLOBAL_OFFSET_TABLE: return LowerGLOBAL_OFFSET_TABLE(Op, DAG);
   case ISD::EH_SJLJ_SETJMP: return LowerEH_SJLJ_SETJMP(Op, DAG);
   case ISD::EH_SJLJ_LONGJMP: return LowerEH_SJLJ_LONGJMP(Op, DAG);
index 29b3be13da03e11b8530e5f5b813abfc5fd997bc..9c7517c88195e49fe85fa4d7b7550bb1b8a8d3a3 100644 (file)
@@ -305,7 +305,6 @@ namespace llvm {
     SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG) const;
     SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const;
     SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const;
-    SDValue LowerSTACKADDR(SDValue Op, SelectionDAG &DAG) const;
     SDValue LowerDYNAMIC_STACKALLOC(SDValue Op, SelectionDAG &DAG) const;
     SDValue LowerShiftRightParts(SDValue Op, SelectionDAG &DAG) const;
     SDValue LowerShiftLeftParts(SDValue Op, SelectionDAG &DAG) const;