[llvm-commits] [llvm] r44267 - in /llvm/trunk: lib/Analysis/IPA/Andersens.cpp test/Analysis/Andersens/2007-11-19-InlineAsm.ll

Nick Lewycky nicholas at mxc.ca
Wed Nov 21 19:07:43 PST 2007


Author: nicholas
Date: Wed Nov 21 21:07:37 2007
New Revision: 44267

URL: http://llvm.org/viewvc/llvm-project?rev=44267&view=rev
Log:
Create nodes for inline asm so that we don't crash looking for the node later.

Added:
    llvm/trunk/test/Analysis/Andersens/2007-11-19-InlineAsm.ll
Modified:
    llvm/trunk/lib/Analysis/IPA/Andersens.cpp

Modified: llvm/trunk/lib/Analysis/IPA/Andersens.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/IPA/Andersens.cpp?rev=44267&r1=44266&r2=44267&view=diff

==============================================================================
--- llvm/trunk/lib/Analysis/IPA/Andersens.cpp (original)
+++ llvm/trunk/lib/Analysis/IPA/Andersens.cpp Wed Nov 21 21:07:37 2007
@@ -668,6 +668,14 @@
         if (AllocationInst *AI = dyn_cast<AllocationInst>(&*II))
           ObjectNodes[AI] = NumObjects++;
       }
+
+      // Calls to inline asm need to be added as well because the callee isn't
+      // referenced anywhere else.
+      if (CallInst *CI = dyn_cast<CallInst>(&*II)) {
+        Value *Callee = CI->getCalledValue();
+        if (isa<InlineAsm>(Callee))
+          ValueNodes[Callee] = NumObjects++;
+      }
     }
   }
 

Added: llvm/trunk/test/Analysis/Andersens/2007-11-19-InlineAsm.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/Andersens/2007-11-19-InlineAsm.ll?rev=44267&view=auto

==============================================================================
--- llvm/trunk/test/Analysis/Andersens/2007-11-19-InlineAsm.ll (added)
+++ llvm/trunk/test/Analysis/Andersens/2007-11-19-InlineAsm.ll Wed Nov 21 21:07:37 2007
@@ -0,0 +1,8 @@
+; RUN: llvm-as < %s | opt -anders-aa -disable-output
+
+define void @x(i16 %Y) {
+entry:
+  %tmp = call i16 asm "bswap $0", "=r,r"(i16 %Y)
+  ret void
+}
+





More information about the llvm-commits mailing list