[llvm] r223364 - Revert r223347 which has caused crashes on bootstrap bots.

Hal Finkel hfinkel at anl.gov
Thu Dec 4 09:46:04 PST 2014


----- Original Message -----
> From: "Alexander Potapenko" <glider at google.com>
> To: llvm-commits at cs.uiuc.edu
> Sent: Thursday, December 4, 2014 8:22:27 AM
> Subject: [llvm] r223364 - Revert r223347 which has caused crashes on bootstrap	bots.
> 
> Author: glider
> Date: Thu Dec  4 08:22:27 2014
> New Revision: 223364
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=223364&view=rev
> Log:
> Revert r223347 which has caused crashes on bootstrap bots.

Reapplied, with a fix, in r223371. Thanks!

 -Hal

> 
> Modified:
>     llvm/trunk/lib/Analysis/InstructionSimplify.cpp
>     llvm/trunk/test/Transforms/InstSimplify/noalias-ptr.ll
> 
> Modified: llvm/trunk/lib/Analysis/InstructionSimplify.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/InstructionSimplify.cpp?rev=223364&r1=223363&r2=223364&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/InstructionSimplify.cpp (original)
> +++ llvm/trunk/lib/Analysis/InstructionSimplify.cpp Thu Dec  4
> 08:22:27 2014
> @@ -2026,22 +2026,12 @@ static Constant *computePointerICmp(cons
>      };
>  
>      // Is the set of underlying objects all things which must be
>      disjoint from
> -    // noalias calls. For allocas, we consider only static ones
> (dynamic
> -    // allocas might be transformed into calls to malloc not
> simultaneously
> -    // live with the compared-to allocation). For globals, we
> exclude symbols
> -    // that might be resolve lazily to symbols in another
> dynamically-loaded
> -    // library (and, thus, could be malloc'ed by the
> implementation).
> +    // noalias calls.
>      auto IsAllocDisjoint = [](SmallVectorImpl<Value *> &Objects) {
>        return std::all_of(Objects.begin(), Objects.end(),
>                           [](Value *V){
> -                           if (const AllocaInst *AI =
> dyn_cast<AllocaInst>(V))
> -                             return AI->isStaticAlloca();
> -                           if (const GlobalValue *GV =
> dyn_cast<GlobalValue>(V))
> -                             return (GV->hasLocalLinkage() ||
> -                                     GV->hasHiddenVisibility() ||
> -                                     GV->hasProtectedVisibility() ||
> -                                     GV->hasUnnamedAddr()) &&
> -                                    !GV->isThreadLocal();
> +                           if (isa<AllocaInst>(V) ||
> isa<GlobalValue>(V))
> +                             return true;
>                             if (const Argument *A =
>                             dyn_cast<Argument>(V))
>                               return A->hasByValAttr();
>                             return false;
> 
> Modified: llvm/trunk/test/Transforms/InstSimplify/noalias-ptr.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/noalias-ptr.ll?rev=223364&r1=223363&r2=223364&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstSimplify/noalias-ptr.ll (original)
> +++ llvm/trunk/test/Transforms/InstSimplify/noalias-ptr.ll Thu Dec  4
> 08:22:27 2014
> @@ -3,11 +3,6 @@ target datalayout = "e-m:e-i64:64-f80:12
>  target triple = "x86_64-unknown-linux-gnu"
>  
>  @g1 = global i32 0, align 4
> - at g2 = internal global i32 0, align 4
> - at g3 = unnamed_addr global i32 0, align 4
> - at g4 = hidden global i32 0, align 4
> - at g5 = protected global i32 0, align 4
> - at g6 = thread_local unnamed_addr global i32 0, align 4
>  
>  ; Make sure we can simplify away a pointer comparison between
>  ; dynamically-allocated memory and a local stack allocation.
> @@ -48,7 +43,7 @@ define void @_Z2p2bb(i1 zeroext %b1, i1
>    %mStackData = alloca [10 x i32], align 16
>    %1 = bitcast [10 x i32]* %mStackData to i8*
>    %2 = getelementptr inbounds [10 x i32]* %mStackData, i64 0, i64 0
> -  %3 = select i1 %b1, i32* %2, i32* @g2
> +  %3 = select i1 %b1, i32* %2, i32* @g1
>    %4 = tail call noalias i8* @_Znam(i64 48) #4
>    %5 = tail call noalias i8* @_Znam(i64 48) #4
>    %.v = select i1 %b2, i8* %4, i8* %5
> @@ -69,81 +64,6 @@ define void @_Z2p2bb(i1 zeroext %b1, i1
>    ret void
>  }
>  
> -define void @_Z2p4bb(i1 zeroext %b1, i1 zeroext %b2) #0 {
> -  %mStackData = alloca [10 x i32], align 16
> -  %1 = bitcast [10 x i32]* %mStackData to i8*
> -  %2 = getelementptr inbounds [10 x i32]* %mStackData, i64 0, i64 0
> -  %3 = select i1 %b1, i32* %2, i32* @g3
> -  %4 = tail call noalias i8* @_Znam(i64 48) #4
> -  %5 = tail call noalias i8* @_Znam(i64 48) #4
> -  %.v = select i1 %b2, i8* %4, i8* %5
> -  %6 = bitcast i8* %.v to i32*
> -  %7 = icmp eq i32* %6, %3
> -  br i1 %7, label %9, label %8
> -
> -; CHECK-LABEL: @_Z2p4bb
> -; CHECK-NOT: icmp
> -; CHECK: ret void
> -
> -; <label>:8                                       ; preds = %0
> -  call void @_ZdaPv(i8* %4) #5
> -  call void @_ZdaPv(i8* %5) #5
> -  br label %9
> -
> -; <label>:9                                       ; preds = %0, %8
> -  ret void
> -}
> -
> -define void @_Z2p5bb(i1 zeroext %b1, i1 zeroext %b2) #0 {
> -  %mStackData = alloca [10 x i32], align 16
> -  %1 = bitcast [10 x i32]* %mStackData to i8*
> -  %2 = getelementptr inbounds [10 x i32]* %mStackData, i64 0, i64 0
> -  %3 = select i1 %b1, i32* %2, i32* @g4
> -  %4 = tail call noalias i8* @_Znam(i64 48) #4
> -  %5 = tail call noalias i8* @_Znam(i64 48) #4
> -  %.v = select i1 %b2, i8* %4, i8* %5
> -  %6 = bitcast i8* %.v to i32*
> -  %7 = icmp eq i32* %6, %3
> -  br i1 %7, label %9, label %8
> -
> -; CHECK-LABEL: @_Z2p5bb
> -; CHECK-NOT: icmp
> -; CHECK: ret void
> -
> -; <label>:8                                       ; preds = %0
> -  call void @_ZdaPv(i8* %4) #5
> -  call void @_ZdaPv(i8* %5) #5
> -  br label %9
> -
> -; <label>:9                                       ; preds = %0, %8
> -  ret void
> -}
> -
> -define void @_Z2p6bb(i1 zeroext %b1, i1 zeroext %b2) #0 {
> -  %mStackData = alloca [10 x i32], align 16
> -  %1 = bitcast [10 x i32]* %mStackData to i8*
> -  %2 = getelementptr inbounds [10 x i32]* %mStackData, i64 0, i64 0
> -  %3 = select i1 %b1, i32* %2, i32* @g5
> -  %4 = tail call noalias i8* @_Znam(i64 48) #4
> -  %5 = tail call noalias i8* @_Znam(i64 48) #4
> -  %.v = select i1 %b2, i8* %4, i8* %5
> -  %6 = bitcast i8* %.v to i32*
> -  %7 = icmp eq i32* %6, %3
> -  br i1 %7, label %9, label %8
> -
> -; CHECK-LABEL: @_Z2p6bb
> -; CHECK-NOT: icmp
> -; CHECK: ret void
> -
> -; <label>:8                                       ; preds = %0
> -  call void @_ZdaPv(i8* %4) #5
> -  call void @_ZdaPv(i8* %5) #5
> -  br label %9
> -
> -; <label>:9                                       ; preds = %0, %8
> -  ret void
> -}
> -
>  ; Here's another case involving multiple underlying objects, but
>  this time we
>  ; must keep the comparison (it might involve a regular pointer-typed
>  function
>  ; argument).
> @@ -173,77 +93,6 @@ define void @_Z4nopebbPi(i1 zeroext %b1,
>    ret void
>  }
>  
> -define void @_Z2p3bb(i1 zeroext %b1, i1 zeroext %b2) #0 {
> -  %mStackData = alloca [10 x i32], align 16
> -  %1 = bitcast [10 x i32]* %mStackData to i8*
> -  %2 = getelementptr inbounds [10 x i32]* %mStackData, i64 0, i64 0
> -  %3 = select i1 %b1, i32* %2, i32* @g1
> -  %4 = tail call noalias i8* @_Znam(i64 48) #4
> -  %5 = tail call noalias i8* @_Znam(i64 48) #4
> -  %.v = select i1 %b2, i8* %4, i8* %5
> -  %6 = bitcast i8* %.v to i32*
> -  %7 = icmp eq i32* %6, %3
> -  br i1 %7, label %9, label %8
> -
> -; CHECK-LABEL: @_Z2p3bb
> -; CHECK: icmp
> -; CHECK: ret void
> -
> -; <label>:8                                       ; preds = %0
> -  call void @_ZdaPv(i8* %4) #5
> -  call void @_ZdaPv(i8* %5) #5
> -  br label %9
> -
> -; <label>:9                                       ; preds = %0, %8
> -  ret void
> -}
> -
> -define void @_Z2p7bb(i1 zeroext %b1, i1 zeroext %b2) #0 {
> -  %mStackData = alloca [10 x i32], align 16
> -  %1 = bitcast [10 x i32]* %mStackData to i8*
> -  %2 = getelementptr inbounds [10 x i32]* %mStackData, i64 0, i64 0
> -  %3 = select i1 %b1, i32* %2, i32* @g6
> -  %4 = tail call noalias i8* @_Znam(i64 48) #4
> -  %5 = tail call noalias i8* @_Znam(i64 48) #4
> -  %.v = select i1 %b2, i8* %4, i8* %5
> -  %6 = bitcast i8* %.v to i32*
> -  %7 = icmp eq i32* %6, %3
> -  br i1 %7, label %9, label %8
> -
> -; CHECK-LABEL: @_Z2p7bb
> -; CHECK: icmp
> -; CHECK: ret void
> -
> -; <label>:8                                       ; preds = %0
> -  call void @_ZdaPv(i8* %4) #5
> -  call void @_ZdaPv(i8* %5) #5
> -  br label %9
> -
> -; <label>:9                                       ; preds = %0, %8
> -  ret void
> -}
> -
> -define void @_Z2p2v(i32 %c) #0 {
> -  %mStackData = alloca [10 x i32], i32 %c, align 16
> -  %1 = bitcast [10 x i32]* %mStackData to i8*
> -  %2 = tail call noalias i8* @_Znam(i64 48) #4
> -  %3 = bitcast i8* %2 to i32*
> -  %4 = getelementptr inbounds [10 x i32]* %mStackData, i64 0, i64 0
> -  %5 = icmp eq i32* %3, %4
> -  br i1 %5, label %7, label %6
> -
> -; CHECK-LABEL: @_Z2p2v
> -; CHECK: icmp
> -; CHECK: ret void
> -
> -; <label>:6                                       ; preds = %0
> -  call void @_ZdaPv(i8* %2) #5
> -  br label %7
> -
> -; <label>:7                                       ; preds = %0, %6
> -  ret void
> -}
> -
>  ; Function Attrs: nobuiltin
>  declare noalias i8* @_Znam(i64) #2
>  
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list