new testcase for PR472
[oota-llvm.git] / test / Feature / constexprbad.ll
1 ; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
2 ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
3 ; RUN: diff %t1.ll %t2.ll
4
5 ; This testcase is for testing illegal constant expressions.
6 ; Uncomment any code line below to test that the error is caught
7 ; See constexpr.ll in this directory for legal ones.
8
9
10 %somestr = constant [11x sbyte] c"hello world"
11
12 ;;---------------------------------------------------
13 ;; Illegal cast expressions
14 ;;---------------------------------------------------
15
16 ;missing attribute (global/constant) or type before operator
17 ;%casterr1 =        cast int 0
18 ;%casterr2 = global cast int 0
19
20 ;missing or illegal initializer value for constant
21 ;%casterr3 = constant 
22 ;%casterr4 = constant int 4.0
23
24 ;; 
25 ;;---------------------------------------------------
26 ;; Illegal getelementptr expressions
27 ;;---------------------------------------------------
28
29 ;; return value must be a pointer to the element
30 ;%geperr1 = global sbyte getelementptr([11x sbyte]* %somestr, long 0, long 8)
31
32 ;; index types must be valid for pointer type
33 ;%geperr2 = global sbyte* getelementptr([11x sbyte]* %somestr, ubyte 0)
34 ;%geperr3 = global sbyte* getelementptr([11x sbyte]* %somestr, long 0, long 0, long 3)
35
36 ;; element accessed by index list must match return type
37 ;%geperr4 = global sbyte* getelementptr([11x sbyte]* %somestr)
38 ;%geperr5 = global sbyte* getelementptr([11x sbyte]* %somestr, long 0)
39 ;%geperr6 = global int* getelementptr([11x sbyte]* %somestr, long 0, long 0)
40
41 ;; Cannot use cast expression in pointer field of getelementptr
42 ;; (unlike the index fields, where it is legal)
43 ;%geperr7 = constant int* getelementptr (int* cast long 0, long 27)
44
45