1*9880d681SAndroid Build Coastguard Worker; Verify that the .toc section is aligned on an 8-byte boundary. 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -filetype=obj -o - | llvm-readobj --sections | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @test(i32* %a) { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i32*, align 8 8*9880d681SAndroid Build Coastguard Worker store i32* %a, i32** %a.addr, align 8 9*9880d681SAndroid Build Coastguard Worker %0 = load i32*, i32** %a.addr, align 8 10*9880d681SAndroid Build Coastguard Worker %incdec.ptr = getelementptr inbounds i32, i32* %0, i32 1 11*9880d681SAndroid Build Coastguard Worker store i32* %incdec.ptr, i32** %a.addr, align 8 12*9880d681SAndroid Build Coastguard Worker %1 = load i32, i32* %0, align 4 13*9880d681SAndroid Build Coastguard Worker switch i32 %1, label %sw.epilog [ 14*9880d681SAndroid Build Coastguard Worker i32 17, label %sw.bb 15*9880d681SAndroid Build Coastguard Worker i32 13, label %sw.bb1 16*9880d681SAndroid Build Coastguard Worker i32 11, label %sw.bb2 17*9880d681SAndroid Build Coastguard Worker i32 7, label %sw.bb3 18*9880d681SAndroid Build Coastguard Worker i32 5, label %sw.bb4 19*9880d681SAndroid Build Coastguard Worker i32 3, label %sw.bb5 20*9880d681SAndroid Build Coastguard Worker i32 2, label %sw.bb6 21*9880d681SAndroid Build Coastguard Worker ] 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workersw.bb: ; preds = %entry 24*9880d681SAndroid Build Coastguard Worker %2 = load i32*, i32** %a.addr, align 8 25*9880d681SAndroid Build Coastguard Worker store i32 2, i32* %2, align 4 26*9880d681SAndroid Build Coastguard Worker br label %sw.epilog 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workersw.bb1: ; preds = %entry 29*9880d681SAndroid Build Coastguard Worker %3 = load i32*, i32** %a.addr, align 8 30*9880d681SAndroid Build Coastguard Worker store i32 3, i32* %3, align 4 31*9880d681SAndroid Build Coastguard Worker br label %sw.epilog 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workersw.bb2: ; preds = %entry 34*9880d681SAndroid Build Coastguard Worker %4 = load i32*, i32** %a.addr, align 8 35*9880d681SAndroid Build Coastguard Worker store i32 5, i32* %4, align 4 36*9880d681SAndroid Build Coastguard Worker br label %sw.epilog 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workersw.bb3: ; preds = %entry 39*9880d681SAndroid Build Coastguard Worker %5 = load i32*, i32** %a.addr, align 8 40*9880d681SAndroid Build Coastguard Worker store i32 7, i32* %5, align 4 41*9880d681SAndroid Build Coastguard Worker br label %sw.epilog 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workersw.bb4: ; preds = %entry 44*9880d681SAndroid Build Coastguard Worker %6 = load i32*, i32** %a.addr, align 8 45*9880d681SAndroid Build Coastguard Worker store i32 11, i32* %6, align 4 46*9880d681SAndroid Build Coastguard Worker br label %sw.epilog 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workersw.bb5: ; preds = %entry 49*9880d681SAndroid Build Coastguard Worker %7 = load i32*, i32** %a.addr, align 8 50*9880d681SAndroid Build Coastguard Worker store i32 13, i32* %7, align 4 51*9880d681SAndroid Build Coastguard Worker br label %sw.epilog 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workersw.bb6: ; preds = %entry 54*9880d681SAndroid Build Coastguard Worker %8 = load i32*, i32** %a.addr, align 8 55*9880d681SAndroid Build Coastguard Worker store i32 17, i32* %8, align 4 56*9880d681SAndroid Build Coastguard Worker br label %sw.epilog 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workersw.epilog: ; preds = %entry, %sw.bb6, %sw.bb5, %sw.bb4, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb 59*9880d681SAndroid Build Coastguard Worker ret void 60*9880d681SAndroid Build Coastguard Worker} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker; CHECK: Name: .toc 63*9880d681SAndroid Build Coastguard Worker; CHECK: AddressAlignment: 8 64*9880d681SAndroid Build Coastguard Worker; CHECK: Name: .rela.toc 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker; This test was generated from the following from PR22711: 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker;void test(int *a) { 69*9880d681SAndroid Build Coastguard Worker; switch (*a++) { 70*9880d681SAndroid Build Coastguard Worker; case 17: *a = 2; break; 71*9880d681SAndroid Build Coastguard Worker; case 13: *a = 3; break; 72*9880d681SAndroid Build Coastguard Worker; case 11: *a = 5; break; 73*9880d681SAndroid Build Coastguard Worker; case 7: *a = 7; break; 74*9880d681SAndroid Build Coastguard Worker; case 5: *a = 11; break; 75*9880d681SAndroid Build Coastguard Worker; case 3: *a = 13; break; 76*9880d681SAndroid Build Coastguard Worker; case 2: *a = 17; break; 77*9880d681SAndroid Build Coastguard Worker; } 78*9880d681SAndroid Build Coastguard Worker;} 79