[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / SimpleLoopUnswitch / pr37888.ll
blob2fc3d2bf6824d60e86e7b7c1c9502c7235d202a1
1 ; RUN: opt -simple-loop-unswitch -verify-memoryssa -loop-deletion -S < %s | FileCheck %s
3 ; Check that when we do unswitching where we re-enqueue the loop to be processed
4 ; again, but manage to delete the loop before ever getting to iterate on it, it
5 ; doesn't crash the legacy pass manager.
7 target triple = "x86_64-unknown-linux-gnu"
9 define void @pr37888() {
10 ; CHECK-LABEL: define void @pr37888()
11 entry:
12   %tobool = icmp ne i16 undef, 0
13   br label %for.body
14 ; CHECK:         %[[TOBOOL:.*]] = icmp ne
15 ; CHECK-NEXT:    br i1 %[[TOBOOL]], label %if.then, label %[[ENTRY_SPLIT:.*]]
17 ; CHECK:       [[ENTRY_SPLIT]]:
18 ; CHECK-NEXT:    br label %for.end
20 for.body:
21   br i1 %tobool, label %if.then, label %if.end
23 if.then:
24   unreachable
25 ; CHECK:       if.then:
26 ; CHECK-NEXT:    unreachable
28 if.end:
29   br label %for.inc
31 for.inc:
32   br i1 undef, label %for.body, label %for.end
34 for.end:
35   ret void
36 ; CHECK:       for.end:
37 ; CHECK-NEXT:    ret void