blob: 28bf2214740a71385aba5235a2e3a66ba849d818 [file] [log] [blame]
Bob Wilson881b45c2010-11-17 21:25:39 +00001; RUN: llc < %s -mtriple=thumb-apple-darwin | FileCheck %s
Bob Wilsonf796d4b2010-11-17 21:25:27 +00002; Test the ARMGlobalMerge pass. Use -march=thumb because it has a small
3; value for the maximum offset (127).
4
5; A local array that exceeds the maximum offset should not be merged.
6; CHECK: g0:
7@g0 = internal global [32 x i32] [ i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2 ]
8
Bob Wilson59182fb2010-11-17 21:25:33 +00009; CHECK: _MergedGlobals:
Bob Wilsonf796d4b2010-11-17 21:25:27 +000010@g1 = internal global i32 1
11@g2 = internal global i32 2
Bob Wilson4c8ab192010-11-17 21:25:36 +000012
13; Make sure that the complete variable fits within the range of the maximum
14; offset. Having the starting offset in range is not sufficient.
15; When this works properly, @g3 is placed in a separate chunk of merged globals.
16; CHECK: _MergedGlobals1:
17@g3 = internal global [30 x i32] [ i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10 ]
Bob Wilson881b45c2010-11-17 21:25:39 +000018
19; Global variables that can be placed in BSS should be kept together in a
20; separate pool of merged globals.
21; CHECK: _MergedGlobals2
22@g4 = internal global i32 0
23@g5 = internal global i32 0