aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/Transforms/AlignmentFromAssumptions/domtree-crash.ll
blob: c7fc1dc69967189378fa4ceeeadfd5269ed889d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -passes=alignment-from-assumptions -S < %s | FileCheck %s

; The alignment assumption is a global, which has users in a different
; function. Test that in this case the dominator tree is only queried with
; blocks from the same function.

@global = external constant [192 x i8]

define void @fn1() {
; CHECK-LABEL: define void @fn1() {
; CHECK-NEXT:    call void @llvm.assume(i1 false) [ "align"(ptr @global, i64 1) ]
; CHECK-NEXT:    ret void
;
  call void @llvm.assume(i1 false) [ "align"(ptr @global, i64 1) ]
  ret void
}

define void @fn2() {
; CHECK-LABEL: define void @fn2() {
; CHECK-NEXT:    ret void
; CHECK:       [[LOOP:.*]]:
; CHECK-NEXT:    [[GEP:%.*]] = getelementptr inbounds i8, ptr @global, i64 0
; CHECK-NEXT:    [[LOAD:%.*]] = load i64, ptr [[GEP]], align 1
; CHECK-NEXT:    br label %[[LOOP]]
;
  ret void

loop:
  %gep = getelementptr inbounds i8, ptr @global, i64 0
  %load = load i64, ptr %gep, align 1
  br label %loop
}