xref: /llvm-project/llvm/test/Transforms/IROutliner/outlining-same-globals.ll (revision f4b925ee7078f058602fd323e25f45f1ae91ca34)
1dae34463SAndrew Litteken; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
29dd9575cSRoman Lebedev; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s
3dae34463SAndrew Litteken
4dae34463SAndrew Litteken@global1 = global i32 1, align 4
5dae34463SAndrew Litteken@global2 = global i32 2, align 4
6dae34463SAndrew Litteken
7dae34463SAndrew Litteken; This test looks at the globals in the regions, and if it they are the
8dae34463SAndrew Litteken; same it outlines the region without elevating the globals to arguments.
9dae34463SAndrew Litteken
10dae34463SAndrew Littekendefine void @outline_globals1() {
11dae34463SAndrew Litteken; CHECK-LABEL: @outline_globals1(
12dae34463SAndrew Litteken; CHECK-NEXT:  entry:
137c6f28a4SAndrew Litteken; CHECK-NEXT:    call void @outlined_ir_func_0()
14dae34463SAndrew Litteken; CHECK-NEXT:    ret void
15dae34463SAndrew Litteken;
16dae34463SAndrew Littekenentry:
17*f4b925eeSMatt Arsenault  %0 = load i32, ptr @global1
18*f4b925eeSMatt Arsenault  %1 = load i32, ptr @global2
19dae34463SAndrew Litteken  %2 = add i32 %0, %1
20dae34463SAndrew Litteken  ret void
21dae34463SAndrew Litteken}
22dae34463SAndrew Litteken
23dae34463SAndrew Littekendefine void @outline_globals2() {
24dae34463SAndrew Litteken; CHECK-LABEL: @outline_globals2(
25dae34463SAndrew Litteken; CHECK-NEXT:  entry:
267c6f28a4SAndrew Litteken; CHECK-NEXT:    call void @outlined_ir_func_0()
27dae34463SAndrew Litteken; CHECK-NEXT:    ret void
28dae34463SAndrew Litteken;
29dae34463SAndrew Littekenentry:
30*f4b925eeSMatt Arsenault  %0 = load i32, ptr @global1
31*f4b925eeSMatt Arsenault  %1 = load i32, ptr @global2
32dae34463SAndrew Litteken  %2 = add i32 %0, %1
33dae34463SAndrew Litteken  ret void
34dae34463SAndrew Litteken}
35dae34463SAndrew Litteken
367c6f28a4SAndrew Litteken; CHECK: define internal void @outlined_ir_func_0()
37dae34463SAndrew Litteken; CHECK: entry_to_outline:
38*f4b925eeSMatt Arsenault; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @global1, align 4
39*f4b925eeSMatt Arsenault; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @global2, align 4
40dae34463SAndrew Litteken; CHECK-NEXT: [[ADD:%.*]] = add i32 [[TMP1]], [[TMP2]]
41dae34463SAndrew Litteken
42