Fix external symbol printing in the AsmPrinter. Tell the ISel that we
authorNate Begeman <natebegeman@mac.com>
Wed, 30 Mar 2005 01:45:43 +0000 (01:45 +0000)
committerNate Begeman <natebegeman@mac.com>
Wed, 30 Mar 2005 01:45:43 +0000 (01:45 +0000)
don't support things like memcpy directly.  This allows a handful of the
Shootout programs to work, yay!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20939 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/PowerPC/PPCISelPattern.cpp

index a50a437893bcb06efd84105926fb6f1c09631550..025ce9824b39454cb9ec52d2e6256204538efae0 100644 (file)
@@ -349,7 +349,13 @@ void PowerPCAsmPrinter::printOp(const MachineOperand &MO, bool IsCallOp) {
     return;
 
   case MachineOperand::MO_ExternalSymbol:
-    O << MO.getSymbolName();
+    if (IsCallOp) {
+      std::string Name(GlobalPrefix); Name += MO.getSymbolName();
+      FnStubs.insert(Name);
+      O << "L" << Name << "$stub";
+      return;
+    }
+    O << GlobalPrefix << MO.getSymbolName();
     return;
 
   case MachineOperand::MO_GlobalAddress: {
index 823fef9b2571235fd4171d821afe7b2beaee3dfa..451ff031c6b38a06368a2cf908ba6a91ac1759c6 100644 (file)
@@ -47,6 +47,10 @@ namespace {
       addRegisterClass(MVT::f32, PPC32::FPRCRegisterClass);
       addRegisterClass(MVT::f64, PPC32::FPRCRegisterClass);
       
+      setOperationAction(ISD::MEMMOVE, MVT::Other, Expand);
+      setOperationAction(ISD::MEMSET, MVT::Other, Expand);
+      setOperationAction(ISD::MEMCPY, MVT::Other, Expand);
+
       computeRegisterProperties();
     }
 
@@ -372,6 +376,7 @@ LowerVAArgNext(bool isVANext, SDOperand Chain, SDOperand VAList,
 std::pair<SDOperand, SDOperand> PPC32TargetLowering::
 LowerFrameReturnAddress(bool isFrameAddress, SDOperand Chain, unsigned Depth,
                         SelectionDAG &DAG) {
+  assert(0 && "LowerFrameReturnAddress unimplemented");
   abort();
 }
 
@@ -1072,6 +1077,7 @@ unsigned ISel::SelectExpr(SDOperand N) {
     
   case ISD::FP_TO_UINT:
   case ISD::FP_TO_SINT:
+    assert(0 && "FP_TO_S/UINT unimplemented");
     abort();
  
   case ISD::SETCC: