summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAndrew Lenharth <andrewl@lenharth.org>2005-06-27 23:24:11 +0000
committerAndrew Lenharth <andrewl@lenharth.org>2005-06-27 23:24:11 +0000
commita50adcf57dfcee06ea99b2c3591e779bbeaa7fb6 (patch)
treef5caeccfa3970869c2b3efdb7f2880e3fbecdd82 /llvm/lib
parentdb32921535a8654c3eaf6e278a95f9a1277797aa (diff)
downloadbcm5719-llvm-a50adcf57dfcee06ea99b2c3591e779bbeaa7fb6.tar.gz
bcm5719-llvm-a50adcf57dfcee06ea99b2c3591e779bbeaa7fb6.zip
So, it turns out I forgot that one valid way of restoring GP after a call
is to use RA, which assumes the called function uses RA for the register holding the return address when it issues a ret. llvm-svn: 22301
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/Alpha/AlphaISelPattern.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Target/Alpha/AlphaISelPattern.cpp b/llvm/lib/Target/Alpha/AlphaISelPattern.cpp
index deb367887d9..43bc1b8396d 100644
--- a/llvm/lib/Target/Alpha/AlphaISelPattern.cpp
+++ b/llvm/lib/Target/Alpha/AlphaISelPattern.cpp
@@ -92,8 +92,7 @@ namespace {
setOperationAction(ISD::BRCONDTWOWAY, MVT::Other, Expand);
setOperationAction(ISD::EXTLOAD, MVT::i1, Promote);
- setOperationAction(ISD::EXTLOAD, MVT::f32, Promote);
-
+
setOperationAction(ISD::ZEXTLOAD, MVT::i1 , Expand);
setOperationAction(ISD::ZEXTLOAD, MVT::i32 , Expand);
@@ -2392,7 +2391,8 @@ void AlphaISel::Select(SDOperand N) {
break;
}
// Just emit a 'ret' instruction
- BuildMI(BB, Alpha::RET, 1, Alpha::R31).addReg(AlphaLowering.getRA());
+ AlphaLowering.restoreRA(BB);
+ BuildMI(BB, Alpha::RET, 1, Alpha::R31).addReg(Alpha::R26);
return;
case ISD::TRUNCSTORE:
OpenPOWER on IntegriCloud