From 9bbd992eb182c03403f6828c1e2bf7c60cd98d2d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 12 Jan 2005 18:08:53 +0000 Subject: [PATCH] Try both ways to fold an add together. This allows us to generate this code imul %EAX, %EAX, 400 add %ECX, %EAX add %ESI, DWORD PTR [%ECX + 4*%EDX] inc %EDX cmp %EDX, 100 instead of this: imul %EAX, %EAX, 400 add %ECX, %EAX mov %EAX, %EDX shl %EAX, 2 add %ECX, %EAX add %ESI, DWORD PTR [%ECX] inc %EDX cmp %EDX, 100 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19513 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ISelPattern.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/Target/X86/X86ISelPattern.cpp b/lib/Target/X86/X86ISelPattern.cpp index b3a93b11e40..194c2fa517c 100644 --- a/lib/Target/X86/X86ISelPattern.cpp +++ b/lib/Target/X86/X86ISelPattern.cpp @@ -527,6 +527,10 @@ bool ISel::SelectAddress(SDOperand N, X86AddressMode &AM) { !SelectAddress(N.Val->getOperand(1), AM)) return false; AM = Backup; + if (!SelectAddress(N.Val->getOperand(1), AM) && + !SelectAddress(N.Val->getOperand(0), AM)) + return false; + AM = Backup; break; } }