; try to check that we have the most important instructions, which shouldn't 
; appear otherwise
; RUN: llc < %s -march=alpha | grep jmp
; RUN: llc < %s -march=alpha | grep gprel32
; RUN: llc < %s -march=alpha | grep ldl
; RUN: llc < %s -march=alpha | grep rodata
; END.

target datalayout = "e-p:64:64"
target triple = "alphaev67-unknown-linux-gnu"
@str = internal constant [2 x i8] c"1\00"               ; <[2 x i8]*> [#uses=1]
@str1 = internal constant [2 x i8] c"2\00"              ; <[2 x i8]*> [#uses=1]
@str2 = internal constant [2 x i8] c"3\00"              ; <[2 x i8]*> [#uses=1]
@str3 = internal constant [2 x i8] c"4\00"              ; <[2 x i8]*> [#uses=1]
@str4 = internal constant [2 x i8] c"5\00"              ; <[2 x i8]*> [#uses=1]
@str5 = internal constant [2 x i8] c"6\00"              ; <[2 x i8]*> [#uses=1]
@str6 = internal constant [2 x i8] c"7\00"              ; <[2 x i8]*> [#uses=1]
@str7 = internal constant [2 x i8] c"8\00"              ; <[2 x i8]*> [#uses=1]

define i32 @main(i32 %x, i8** %y) {
entry:
        %x_addr = alloca i32            ; <i32*> [#uses=2]
        %y_addr = alloca i8**           ; <i8***> [#uses=1]
        %retval = alloca i32, align 4           ; <i32*> [#uses=2]
        %tmp = alloca i32, align 4              ; <i32*> [#uses=2]
        %foo = alloca i8*, align 8              ; <i8**> [#uses=9]
        %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
        store i32 %x, i32* %x_addr
        store i8** %y, i8*** %y_addr
        %tmp.upgrd.1 = load i32* %x_addr                ; <i32> [#uses=1]
        switch i32 %tmp.upgrd.1, label %bb15 [
                 i32 1, label %bb
                 i32 2, label %bb1
                 i32 3, label %bb3
                 i32 4, label %bb5
                 i32 5, label %bb7
                 i32 6, label %bb9
                 i32 7, label %bb11
                 i32 8, label %bb13
        ]

bb:             ; preds = %entry
        %tmp.upgrd.2 = getelementptr [2 x i8]* @str, i32 0, i64 0               ; <i8*> [#uses=1]
        store i8* %tmp.upgrd.2, i8** %foo
        br label %bb16

bb1:            ; preds = %entry
        %tmp2 = getelementptr [2 x i8]* @str1, i32 0, i64 0             ; <i8*> [#uses=1]
        store i8* %tmp2, i8** %foo
        br label %bb16

bb3:            ; preds = %entry
        %tmp4 = getelementptr [2 x i8]* @str2, i32 0, i64 0             ; <i8*> [#uses=1]
        store i8* %tmp4, i8** %foo
        br label %bb16

bb5:            ; preds = %entry
        %tmp6 = getelementptr [2 x i8]* @str3, i32 0, i64 0             ; <i8*> [#uses=1]
        store i8* %tmp6, i8** %foo
        br label %bb16

bb7:            ; preds = %entry
        %tmp8 = getelementptr [2 x i8]* @str4, i32 0, i64 0             ; <i8*> [#uses=1]
        store i8* %tmp8, i8** %foo
        br label %bb16

bb9:            ; preds = %entry
        %tmp10 = getelementptr [2 x i8]* @str5, i32 0, i64 0            ; <i8*> [#uses=1]
        store i8* %tmp10, i8** %foo
        br label %bb16

bb11:           ; preds = %entry
        %tmp12 = getelementptr [2 x i8]* @str6, i32 0, i64 0            ; <i8*> [#uses=1]
        store i8* %tmp12, i8** %foo
        br label %bb16

bb13:           ; preds = %entry
        %tmp14 = getelementptr [2 x i8]* @str7, i32 0, i64 0            ; <i8*> [#uses=1]
        store i8* %tmp14, i8** %foo
        br label %bb16

bb15:           ; preds = %entry
        br label %bb16

bb16:           ; preds = %bb15, %bb13, %bb11, %bb9, %bb7, %bb5, %bb3, %bb1, %bb
        %tmp17 = load i8** %foo         ; <i8*> [#uses=1]
        %tmp18 = call i32 (...)* @print( i8* %tmp17 )           ; <i32> [#uses=0]
        store i32 0, i32* %tmp
        %tmp19 = load i32* %tmp         ; <i32> [#uses=1]
        store i32 %tmp19, i32* %retval
        br label %return

return:         ; preds = %bb16
        %retval.upgrd.3 = load i32* %retval             ; <i32> [#uses=1]
        ret i32 %retval.upgrd.3
}

declare i32 @print(...)

