Fix use after free (pr16103).
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 22 May 2013 15:31:11 +0000 (15:31 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 22 May 2013 15:31:11 +0000 (15:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182482 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/R600TextureIntrinsicsReplacer.cpp

index 518a4766aec2dbe6d8638956ba99bcc52ba93acc..b644e0bc0c5a27ea28b718999a6f25dd5a846534 100644 (file)
@@ -259,20 +259,35 @@ public:
   }
 
   void visitCallInst(CallInst &I) {
-    if (I.getCalledFunction()->getName() == "llvm.AMDGPU.tex")
+    StringRef Name = I.getCalledFunction()->getName();
+    if (Name == "llvm.AMDGPU.tex") {
       ReplaceTexIntrinsic(I, false, TexSign, "llvm.R600.tex", "llvm.R600.texc");
-    if (I.getCalledFunction()->getName() == "llvm.AMDGPU.txl")
+      return;
+    }
+    if (Name == "llvm.AMDGPU.txl") {
       ReplaceTexIntrinsic(I, true, TexSign, "llvm.R600.txl", "llvm.R600.txlc");
-    if (I.getCalledFunction()->getName() == "llvm.AMDGPU.txb")
+      return;
+    }
+    if (Name == "llvm.AMDGPU.txb") {
       ReplaceTexIntrinsic(I, true, TexSign, "llvm.R600.txb", "llvm.R600.txbc");
-    if (I.getCalledFunction()->getName() == "llvm.AMDGPU.txf")
+      return;
+    }
+    if (Name == "llvm.AMDGPU.txf") {
       ReplaceTXF(I);
-    if (I.getCalledFunction()->getName() == "llvm.AMDGPU.txq")
+      return;
+    }
+    if (Name == "llvm.AMDGPU.txq") {
       ReplaceTexIntrinsic(I, false, TexQSign, "llvm.R600.txq", "llvm.R600.txq");
-    if (I.getCalledFunction()->getName() == "llvm.AMDGPU.ddx")
+      return;
+    }
+    if (Name == "llvm.AMDGPU.ddx") {
       ReplaceTexIntrinsic(I, false, TexSign, "llvm.R600.ddx", "llvm.R600.ddx");
-    if (I.getCalledFunction()->getName() == "llvm.AMDGPU.ddy")
+      return;
+    }
+    if (Name == "llvm.AMDGPU.ddy") {
       ReplaceTexIntrinsic(I, false, TexSign, "llvm.R600.ddy", "llvm.R600.ddy");
+      return;
+    }
   }
 
 };