X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FFeature%2Fconstexpr.ll;h=13e6f365aabf36aa3c7fa90f7c8d890179db18c8;hb=6220c8f960fe287efcfc27f46ab6ad48e5b3c5d2;hp=aef668e14578bc3286cc546afd8f9c7c58a4874b;hpb=37d0e7e3fe32897bef05fc479eefc0b1840540b8;p=oota-llvm.git diff --git a/test/Feature/constexpr.ll b/test/Feature/constexpr.ll index aef668e1457..13e6f365aab 100644 --- a/test/Feature/constexpr.ll +++ b/test/Feature/constexpr.ll @@ -1,3 +1,7 @@ +; RUN: llvm-as < %s | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; This testcase is for testing expressions constructed from ; constant values, including constant pointers to globals. ; @@ -6,17 +10,20 @@ ;; Test constant cast expressions ;;------------------------------- -%t2 = global int* %t1 ;; Forward reference without cast -%t3 = global uint* cast int* %t1 ;; Forward reference with cast -%t1 = global int 4 ;; int* %0 -%t4 = global int** cast uint** %t3 ;; Cast of a previous cast -%t5 = global uint** %t3 ;; Reference to a previous cast -%t6 = global int*** %t4 ;; Different ref. to a previous cast -%t7 = global float* cast int 12345678 ;; Cast ordinary value to ptr -%t9 = global int cast float cast int 8 ;; Nested cast expression - -global int* cast float* %0 ;; Forward numeric reference -global float* %0 ;; Duplicate forward numeric reference +global i64 u0x00001 ; hexadecimal unsigned integer constants +global i64 s0x0012312 ; hexadecimal signed integer constants + +@t2 = global i32* @t1 ;; Forward reference without cast +@t3 = global i32* bitcast (i32* @t1 to i32*) ;; Forward reference with cast +@t1 = global i32 4 ;; i32* @0 +@t4 = global i32** bitcast (i32** @t3 to i32**) ;; Cast of a previous cast +@t5 = global i32** @t3 ;; Reference to a previous cast +@t6 = global i32*** @t4 ;; Different ref. to a previous cast +@t7 = global float* inttoptr (i32 12345678 to float*) ;; Cast ordinary value to ptr +@t9 = global i32 bitcast (float bitcast (i32 8 to float) to i32) ;; Nested cast expression + +global i32* bitcast (float* @4 to i32*) ;; Forward numeric reference +global float* @4 ;; Duplicate forward numeric reference global float 0.0 @@ -24,49 +31,50 @@ global float 0.0 ;; Test constant getelementpr expressions for arrays ;;--------------------------------------------------- -%array = constant [2 x int] [ int 12, int 52 ] -%arrayPtr = global int* getelementptr ([2 x int]* %array, uint 0, uint 0) ;; int* &%array[0][0] -%arrayPtr5 = global int* getelementptr (int** %arrayPtr, uint 0, uint 5) ;; int* &%arrayPtr[5] +@array = constant [2 x i32] [ i32 12, i32 52 ] +@arrayPtr = global i32* getelementptr ([2 x i32]* @array, i64 0, i64 0) ;; i32* &@array[0][0] +@arrayPtr5 = global i32** getelementptr (i32** @arrayPtr, i64 5) ;; i32* &@arrayPtr[5] -%somestr = constant [11x sbyte] c"hello world" -%char5 = global sbyte* getelementptr([11x sbyte]* %somestr, uint 0, uint 5) +@somestr = constant [11x i8] c"hello world" +@char5 = global i8* getelementptr([11x i8]* @somestr, i64 0, i64 5) -%char8a = global int* cast sbyte* getelementptr([11x sbyte]* %somestr, uint 0, uint 8) ;; cast of getelementptr +;; cast of getelementptr +@char8a = global i32* bitcast (i8* getelementptr([11x i8]* @somestr, i64 0, i64 8) to i32*) -%char8b = global sbyte* getelementptr([11x sbyte]* %somestr, uint cast ubyte 0, uint cast sbyte 8) ;; getelementptr containing casts +;; getelementptr containing casts +@char8b = global i8* getelementptr([11x i8]* @somestr, i64 sext (i8 0 to i64), i64 sext (i8 8 to i64)) ;;------------------------------------------------------- ;; TODO: Test constant getelementpr expressions for structures ;;------------------------------------------------------- -%SType = type { int , {float, {ubyte} }, ulong } ;; struct containing struct -%SAType = type { int , {[2x float], ulong} } ;; struct containing array +%SType = type { i32 , {float, {i8} }, i64 } ;; struct containing struct +%SAType = type { i32 , {[2x float], i64} } ;; struct containing array -%S1 = global %SType* null ;; Global initialized to NULL -%S2c = constant %SType { int 1, {float,{ubyte}} {float 2.0, {ubyte} {ubyte 3}}, ulong 4} +@S1 = global %SType* null ;; Global initialized to NULL +@S2c = constant %SType { i32 1, {float,{i8}} {float 2.0, {i8} {i8 3}}, i64 4} -%S3c = constant %SAType { int 1, {[2x float], ulong} {[2x float] [float 2.0, float 3.0], ulong 4} } +@S3c = constant %SAType { i32 1, {[2x float], i64} {[2x float] [float 2.0, float 3.0], i64 4} } -%S1ptr = global %SType** %S1 ;; Ref. to global S1 -%S2 = global %SType* %S2c ;; Ref. to constant S2 -%S3 = global %SAType* %S3c ;; Ref. to constant S3 +@S1ptr = global %SType** @S1 ;; Ref. to global S1 +@S2 = global %SType* @S2c ;; Ref. to constant S2 +@S3 = global %SAType* @S3c ;; Ref. to constant S3 - ;; Pointer to float (**%S1).1.0 -%S1fld1a = global float* getelementptr (%SType** %S1, uint 0, uint 0, ubyte 1, ubyte 0) + ;; Pointer to float (**@S1).1.0 +@S1fld1a = global float* getelementptr (%SType* @S2c, i64 0, i32 1, i32 0) ;; Another ptr to the same! -%S1fld1b = global float* getelementptr (%SType*** %S1ptr, uint 0, uint 0, uint 0, ubyte 1, ubyte 0) +@S1fld1b = global float* getelementptr (%SType* @S2c, i64 0, i32 1, i32 0) -%S1fld1bptr = global float** %S1fld1b ;; Ref. to previous pointer +@S1fld1bptr = global float** @S1fld1b ;; Ref. to previous pointer - ;; Pointer to ubyte (**%S2).1.1.0 -%S2fld3 = global ubyte* getelementptr (%SType** %S2, uint 0, uint 0, ubyte 1, ubyte 1, ubyte 0) + ;; Pointer to i8 (**@S2).1.1.0 +@S2fld3 = global i8* getelementptr (%SType* @S2c, i64 0, i32 1, i32 1, i32 0) - ;; Pointer to float (**%S2).1.0[0] -%S3fld3 = global float* getelementptr (%SAType** %S3, uint 0, uint 0, ubyte 1, ubyte 0, uint 0) + ;; Pointer to float (**@S2).1.0[0] +;@S3fld3 = global float* getelementptr (%SAType** @S3, i64 0, i64 0, i32 1, i32 0, i64 0) ;;--------------------------------------------------------- ;; TODO: Test constant expressions for unary and binary operators ;;--------------------------------------------------------- -implementation - +;;---------------------------------------------------