[InstCombine] Don't miscompile select to poison
[oota-llvm.git] / test / Transforms / InstCombine / 2009-01-24-EmptyStruct.ll
1 ; RUN: opt < %s -instcombine
2 ; PR3381
3 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
4 target triple = "x86_64-unknown-linux-gnu"
5         %struct.atomic_t = type { i32 }
6         %struct.inode = type { i32, %struct.mutex }
7         %struct.list_head = type { %struct.list_head*, %struct.list_head* }
8         %struct.lock_class_key = type {  }
9         %struct.mutex = type { %struct.atomic_t, %struct.rwlock_t, %struct.list_head }
10         %struct.rwlock_t = type { %struct.lock_class_key }
11
12 define void @handle_event(%struct.inode* %bar) nounwind {
13 entry:
14         %0 = getelementptr %struct.inode, %struct.inode* %bar, i64 -1, i32 1, i32 1             ; <%struct.rwlock_t*> [#uses=1]
15         %1 = bitcast %struct.rwlock_t* %0 to i32*               ; <i32*> [#uses=1]
16         store i32 1, i32* %1, align 4
17         ret void
18 }