[llvm] r301814 - Use WeakVH instead of WeakTrackingVH in AliasSetTracker's UnkownInsts

Sanjoy Das via llvm-commits llvm-commits at lists.llvm.org
Mon May 1 10:07:57 PDT 2017


Author: sanjoy
Date: Mon May  1 12:07:56 2017
New Revision: 301814

URL: http://llvm.org/viewvc/llvm-project?rev=301814&view=rev
Log:
Use WeakVH instead of WeakTrackingVH in AliasSetTracker's UnkownInsts

In cases where an instruction (a call site, say) is RAUW'ed with some
other value (this is possible via the `returned` attribute, for
instance), we want the slot in UnknownInsts to point to the original
Instruction we wanted to track, not the value it got replaced by.

Fixes PR32587.

This relands r301426.

Added:
    llvm/trunk/test/Analysis/AliasSet/unknown-inst-tracking.ll
Modified:
    llvm/trunk/include/llvm/Analysis/AliasSetTracker.h

Modified: llvm/trunk/include/llvm/Analysis/AliasSetTracker.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/AliasSetTracker.h?rev=301814&r1=301813&r2=301814&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/AliasSetTracker.h (original)
+++ llvm/trunk/include/llvm/Analysis/AliasSetTracker.h Mon May  1 12:07:56 2017
@@ -121,10 +121,10 @@ class AliasSet : public ilist_node<Alias
   AliasSet *Forward;
 
   /// All instructions without a specific address in this alias set.
-  /// In rare cases this vector can have a null'ed out WeakTrackingVH
+  /// In rare cases this vector can have a null'ed out WeakVH
   /// instances (can happen if some other loop pass deletes an
   /// instruction in this list).
-  std::vector<WeakTrackingVH> UnknownInsts;
+  std::vector<WeakVH> UnknownInsts;
 
   /// Number of nodes pointing to this AliasSet plus the number of AliasSets
   /// forwarding to it.

Added: llvm/trunk/test/Analysis/AliasSet/unknown-inst-tracking.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/AliasSet/unknown-inst-tracking.ll?rev=301814&view=auto
==============================================================================
--- llvm/trunk/test/Analysis/AliasSet/unknown-inst-tracking.ll (added)
+++ llvm/trunk/test/Analysis/AliasSet/unknown-inst-tracking.ll Mon May  1 12:07:56 2017
@@ -0,0 +1,25 @@
+; RUN: opt -S -licm -loop-unswitch < %s | FileCheck %s
+
+; This test checks for a crash.  See PR32587.
+
+ at global = external global i32
+
+declare i32 @f_1(i8, i32 returned)
+
+define i32 @f_0() {
+; CHECK-LABEL: @f_0(
+bb:
+  br label %bb1
+
+bb1:                                              ; preds = %bb3, %bb
+  %tmp = load i32, i32* @global
+  %tmp2 = select i1 false, i16 1, i16 0
+  br label %bb3
+
+bb3:                                              ; preds = %bb3, %bb1
+  %tmp4 = phi i8 [ 0, %bb1 ], [ %tmp6, %bb3 ]
+  %tmp5 = icmp eq i16 %tmp2, 0
+  %tmp6 = select i1 %tmp5, i8 %tmp4, i8 1
+  %tmp7 = tail call i32 @f_1(i8 %tmp6, i32 1)
+  br i1 false, label %bb1, label %bb3
+}




More information about the llvm-commits mailing list