ret i32 0
}
-@alias = alias i32 (), i32 ()* @func
+@alias = alias i32 (), ptr @func
define i32 @main() {
entry:
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-@.LC0 = internal global [10 x i8] c"argc: %d\0A\00" ; <[10 x i8]*> [#uses=1]
+@.LC0 = internal global [10 x i8] c"argc: %d\0A\00" ; <ptr> [#uses=1]
-declare i32 @puts(i8*)
+declare i32 @puts(ptr)
-define void @getoptions(i32* %argc) {
+define void @getoptions(ptr %argc) {
bb0:
ret void
}
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
bb0:
- call i32 (i8*, ...) @printf( i8* getelementptr ([10 x i8], [10 x i8]* @.LC0, i64 0, i64 0), i32 %argc ) ; <i32>:0 [#uses=0]
- %cast224 = bitcast i8** %argv to i8* ; <i8*> [#uses=1]
- %local = alloca i8* ; <i8**> [#uses=3]
- store i8* %cast224, i8** %local
+ call i32 (ptr, ...) @printf( ptr @.LC0, i32 %argc ) ; <i32>:0 [#uses=0]
+ %local = alloca ptr ; <ptr> [#uses=3]
+ store ptr %argv, ptr %local
%cond226 = icmp sle i32 %argc, 0 ; <i1> [#uses=1]
br i1 %cond226, label %bb3, label %bb2
bb2: ; preds = %bb2, %bb0
%cann-indvar = phi i32 [ 0, %bb0 ], [ %add1-indvar, %bb2 ] ; <i32> [#uses=2]
%add1-indvar = add i32 %cann-indvar, 1 ; <i32> [#uses=2]
%cann-indvar-idxcast = sext i32 %cann-indvar to i64 ; <i64> [#uses=1]
- %CT = bitcast i8** %local to i8*** ; <i8***> [#uses=1]
- %reg115 = load i8**, i8*** %CT ; <i8**> [#uses=1]
- %cast235 = getelementptr i8*, i8** %reg115, i64 %cann-indvar-idxcast ; <i8**> [#uses=1]
- %reg117 = load i8*, i8** %cast235 ; <i8*> [#uses=1]
- %reg236 = call i32 @puts( i8* %reg117 ) ; <i32> [#uses=0]
+ %reg115 = load ptr, ptr %local ; <ptr> [#uses=1]
+ %cast235 = getelementptr ptr, ptr %reg115, i64 %cann-indvar-idxcast ; <ptr> [#uses=1]
+ %reg117 = load ptr, ptr %cast235 ; <ptr> [#uses=1]
+ %reg236 = call i32 @puts( ptr %reg117 ) ; <i32> [#uses=0]
%cond239 = icmp slt i32 %add1-indvar, %argc ; <i1> [#uses=1]
br i1 %cond239, label %bb2, label %bb3
bb3: ; preds = %bb2, %bb0
- %cast243 = bitcast i8** %local to i32* ; <i32*> [#uses=1]
- call void @getoptions( i32* %cast243 )
+ call void @getoptions( ptr %local )
ret i32 0
}
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-define i32 @bar(i8* %X) {
+define i32 @bar(ptr %X) {
; pointer should be 4 byte aligned!
- %P = alloca double ; <double*> [#uses=1]
- %R = ptrtoint double* %P to i32 ; <i32> [#uses=1]
+ %P = alloca double ; <ptr> [#uses=1]
+ %R = ptrtoint ptr %P to i32 ; <i32> [#uses=1]
%A = and i32 %R, 3 ; <i32> [#uses=1]
ret i32 %A
}
define i32 @main() {
- %SP = alloca i8 ; <i8*> [#uses=1]
+ %SP = alloca i8 ; <ptr> [#uses=1]
%X = add i32 0, 0 ; <i32> [#uses=1]
- alloca i8, i32 %X ; <i8*>:1 [#uses=0]
- call i32 @bar( i8* %SP ) ; <i32>:2 [#uses=1]
+ alloca i8, i32 %X ; <ptr>:1 [#uses=0]
+ call i32 @bar( ptr %SP ) ; <i32>:2 [#uses=1]
ret i32 %2
}
; RUN: not %lli -jit-kind=mcjit %s
; RUN: not %lli %s
-@test = global i64 0 ; <i64*> [#uses=1]
+@test = global i64 0 ; <ptr> [#uses=1]
define internal i64 @test.upgrd.1() {
- %tmp.0 = load i64, i64* @test ; <i64> [#uses=1]
+ %tmp.0 = load i64, ptr @test ; <i64> [#uses=1]
%tmp.1 = add i64 %tmp.0, 1 ; <i64> [#uses=1]
ret i64 %tmp.1
}
; RUN: %lli -jit-kind=mcjit %s test
; RUN: %lli %s test
-declare i32 @puts(i8*)
+declare i32 @puts(ptr)
-define i32 @main(i32 %argc.1, i8** %argv.1) {
- %tmp.5 = getelementptr i8*, i8** %argv.1, i64 1 ; <i8**> [#uses=1]
- %tmp.6 = load i8*, i8** %tmp.5 ; <i8*> [#uses=1]
- %tmp.0 = call i32 @puts( i8* %tmp.6 ) ; <i32> [#uses=0]
+define i32 @main(i32 %argc.1, ptr %argv.1) {
+ %tmp.5 = getelementptr ptr, ptr %argv.1, i64 1 ; <ptr> [#uses=1]
+ %tmp.6 = load ptr, ptr %tmp.5 ; <ptr> [#uses=1]
+ %tmp.0 = call i32 @puts( ptr %tmp.6 ) ; <i32> [#uses=0]
ret i32 0
}
; local register allocator.
define i32 @main(i32 %X) {
- %A = alloca i32, i32 %X ; <i32*> [#uses=0]
- %B = alloca float, i32 %X ; <float*> [#uses=0]
+ %A = alloca i32, i32 %X ; <ptr> [#uses=0]
+ %B = alloca float, i32 %X ; <ptr> [#uses=0]
ret i32 0
}
;
-declare i32 @strlen(i8*)
+declare i32 @strlen(ptr)
-define i32 @main(i32 %argc.1, i8** %argv.1, i8** %envp.1) {
- %tmp.2 = load i8*, i8** %envp.1 ; <i8*> [#uses=1]
- %tmp.3 = call i32 @strlen( i8* %tmp.2 ) ; <i32> [#uses=1]
+define i32 @main(i32 %argc.1, ptr %argv.1, ptr %envp.1) {
+ %tmp.2 = load ptr, ptr %envp.1 ; <ptr> [#uses=1]
+ %tmp.3 = call i32 @strlen( ptr %tmp.2 ) ; <i32> [#uses=1]
%T = icmp eq i32 %tmp.3, 0 ; <i1> [#uses=1]
%R = zext i1 %T to i32 ; <i32> [#uses=1]
ret i32 %R
define i32 @main(i32 %A) {
; ESP gets used again...
- %Ap2 = alloca i32, i32 %A ; <i32*> [#uses=11]
+ %Ap2 = alloca i32, i32 %A ; <ptr> [#uses=11]
; Produce lots of overlapping live ranges
%B = add i32 %A, 1 ; <i32> [#uses=1]
%C = add i32 %A, 2 ; <i32> [#uses=1]
%J = add i32 %A, 9 ; <i32> [#uses=1]
%K = add i32 %A, 10 ; <i32> [#uses=1]
; Uses of all of the values
- store i32 %A, i32* %Ap2
- store i32 %B, i32* %Ap2
- store i32 %C, i32* %Ap2
- store i32 %D, i32* %Ap2
- store i32 %E, i32* %Ap2
- store i32 %F, i32* %Ap2
- store i32 %G, i32* %Ap2
- store i32 %H, i32* %Ap2
- store i32 %I, i32* %Ap2
- store i32 %J, i32* %Ap2
- store i32 %K, i32* %Ap2
+ store i32 %A, ptr %Ap2
+ store i32 %B, ptr %Ap2
+ store i32 %C, ptr %Ap2
+ store i32 %D, ptr %Ap2
+ store i32 %E, ptr %Ap2
+ store i32 %F, ptr %Ap2
+ store i32 %G, ptr %Ap2
+ store i32 %H, ptr %Ap2
+ store i32 %I, ptr %Ap2
+ store i32 %J, ptr %Ap2
+ store i32 %K, ptr %Ap2
ret i32 0
}
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-@A = global i32 0 ; <i32*> [#uses=1]
+@A = global i32 0 ; <ptr> [#uses=1]
define i32 @main() {
%Ret = call i32 @test( i1 true, i32 0 ) ; <i32> [#uses=1]
define i32 @test(i1 %c, i32 %A) {
br i1 %c, label %Taken1, label %NotTaken
Cont: ; preds = %Taken1, %NotTaken
- %V = phi i32 [ 0, %NotTaken ], [ sub (i32 ptrtoint (i32* @A to i32), i32 1234), %Taken1 ] ; <i32> [#uses=0]
+ %V = phi i32 [ 0, %NotTaken ], [ sub (i32 ptrtoint (ptr @A to i32), i32 1234), %Taken1 ] ; <i32> [#uses=0]
ret i32 0
NotTaken: ; preds = %0
br label %Cont
; XFAIL: i686 && windows
define i32 @main() {
- %f = bitcast i32 (i32, i32*, i32)* @check_tail to i32* ; <i32*> [#uses=1]
- %res = tail call fastcc i32 @check_tail( i32 10, i32* %f, i32 10 ) ; <i32> [#uses=1]
+ %res = tail call fastcc i32 @check_tail( i32 10, ptr @check_tail, i32 10 ) ; <i32> [#uses=1]
ret i32 %res
}
-define fastcc i32 @check_tail(i32 %x, i32* %f, i32 %g) {
+define fastcc i32 @check_tail(i32 %x, ptr %f, i32 %g) {
%tmp1 = icmp sgt i32 %x, 0 ; <i1> [#uses=1]
br i1 %tmp1, label %if-then, label %if-else
if-then: ; preds = %0
- %fun_ptr = bitcast i32* %f to i32 (i32, i32*, i32)* ; <i32 (i32, i32*, i32)*> [#uses=1]
%arg1 = add i32 %x, -1 ; <i32> [#uses=1]
- %res = tail call fastcc i32 %fun_ptr( i32 %arg1, i32* %f, i32 %g ) ; <i32> [#uses=1]
+ %res = tail call fastcc i32 %f( i32 %arg1, ptr %f, i32 %g ) ; <i32> [#uses=1]
ret i32 %res
if-else: ; preds = %0
ret i32 %x
define i32 @main() {
entry:
- %retval = alloca i32 ; <i32*> [#uses=2]
- %tmp = alloca i32 ; <i32*> [#uses=2]
- %x = alloca i75, align 16 ; <i75*> [#uses=1]
+ %retval = alloca i32 ; <ptr> [#uses=2]
+ %tmp = alloca i32 ; <ptr> [#uses=2]
+ %x = alloca i75, align 16 ; <ptr> [#uses=1]
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
- store i75 999, i75* %x, align 16
- store i32 0, i32* %tmp, align 4
- %tmp1 = load i32, i32* %tmp, align 4 ; <i32> [#uses=1]
- store i32 %tmp1, i32* %retval, align 4
+ store i75 999, ptr %x, align 16
+ store i32 0, ptr %tmp, align 4
+ %tmp1 = load i32, ptr %tmp, align 4 ; <i32> [#uses=1]
+ store i32 %tmp1, ptr %retval, align 4
br label %return
return: ; preds = %entry
- %retval2 = load i32, i32* %retval ; <i32> [#uses=1]
+ %retval2 = load i32, ptr %retval ; <i32> [#uses=1]
ret i32 %retval2
}
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
target triple = "i686-pc-linux-gnu"
-@.str = internal constant [10 x i8] c"MSB = %d\0A\00" ; <[10 x i8]*> [#uses=1]
+@.str = internal constant [10 x i8] c"MSB = %d\0A\00" ; <ptr> [#uses=1]
define i65 @foo(i65 %x) {
entry:
- %x_addr = alloca i65 ; <i65*> [#uses=2]
- %retval = alloca i65 ; <i65*> [#uses=2]
- %tmp = alloca i65 ; <i65*> [#uses=2]
+ %x_addr = alloca i65 ; <ptr> [#uses=2]
+ %retval = alloca i65 ; <ptr> [#uses=2]
+ %tmp = alloca i65 ; <ptr> [#uses=2]
%"alloca point" = bitcast i65 0 to i65 ; <i65> [#uses=0]
- store i65 %x, i65* %x_addr
- %tmp1 = load i65, i65* %x_addr, align 4 ; <i65> [#uses=1]
+ store i65 %x, ptr %x_addr
+ %tmp1 = load i65, ptr %x_addr, align 4 ; <i65> [#uses=1]
%tmp2 = ashr i65 %tmp1, 65 ; <i65> [#uses=1]
- store i65 %tmp2, i65* %tmp, align 4
- %tmp3 = load i65, i65* %tmp, align 4 ; <i65> [#uses=1]
- store i65 %tmp3, i65* %retval, align 4
+ store i65 %tmp2, ptr %tmp, align 4
+ %tmp3 = load i65, ptr %tmp, align 4 ; <i65> [#uses=1]
+ store i65 %tmp3, ptr %retval, align 4
br label %return
return: ; preds = %entry
- %retval4 = load i65, i65* %retval ; <i65> [#uses=1]
+ %retval4 = load i65, ptr %retval ; <i65> [#uses=1]
ret i65 %retval4
}
define i32 @main() {
entry:
- %retval = alloca i32 ; <i32*> [#uses=1]
- %iftmp.0 = alloca i32 ; <i32*> [#uses=3]
+ %retval = alloca i32 ; <ptr> [#uses=1]
+ %iftmp.0 = alloca i32 ; <ptr> [#uses=3]
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
%tmp = call i65 @foo( i65 -9 ) ; <i65> [#uses=1]
%tmp1 = lshr i65 %tmp, 64 ; <i65> [#uses=1]
br i1 %toBool, label %cond_true, label %cond_false
cond_true: ; preds = %entry
- store i32 0, i32* %iftmp.0, align 4
+ store i32 0, ptr %iftmp.0, align 4
br label %cond_next
cond_false: ; preds = %entry
- store i32 1, i32* %iftmp.0, align 4
+ store i32 1, ptr %iftmp.0, align 4
br label %cond_next
cond_next: ; preds = %cond_false, %cond_true
- %tmp5 = getelementptr [10 x i8], [10 x i8]* @.str, i32 0, i32 0 ; <i8*> [#uses=1]
- %tmp6 = load i32, i32* %iftmp.0, align 4 ; <i32> [#uses=1]
- %tmp7 = call i32 (i8*, ...) @printf( i8* noalias %tmp5, i32 %tmp6 ) nounwind ; <i32> [#uses=0]
+ %tmp5 = getelementptr [10 x i8], ptr @.str, i32 0, i32 0 ; <ptr> [#uses=1]
+ %tmp6 = load i32, ptr %iftmp.0, align 4 ; <i32> [#uses=1]
+ %tmp7 = call i32 (ptr, ...) @printf( ptr noalias %tmp5, i32 %tmp6 ) nounwind ; <i32> [#uses=0]
br label %return
return: ; preds = %cond_next
- store i32 0, i32* %retval, align 4
- %retval8 = load i32, i32* %retval ; <i32> [#uses=1]
+ store i32 0, ptr %retval, align 4
+ %retval8 = load i32, ptr %retval ; <i32> [#uses=1]
ret i32 %retval8
}
-declare i32 @printf(i8* noalias , ...) nounwind
+declare i32 @printf(ptr noalias , ...) nounwind
;
@test = global [2 x i32] [i32 -1, i32 0], align 4
-@p = global i32* getelementptr inbounds ([2 x i32], [2 x i32]* @test, i64 0, i64 1), align 8
+@p = global ptr getelementptr inbounds ([2 x i32], ptr @test, i64 0, i64 1), align 8
define i32 @main() {
entry:
- %0 = load i32*, i32** @p, align 8
- %1 = load i32, i32* %0, align 4
+ %0 = load ptr, ptr @p, align 8
+ %1 = load i32, ptr %0, align 4
ret i32 %1
}
-declare i8* @__cxa_allocate_exception(i64)
-declare void @__cxa_throw(i8*, i8*, i8*)
+declare ptr @__cxa_allocate_exception(i64)
+declare void @__cxa_throw(ptr, ptr, ptr)
declare i32 @__gxx_personality_v0(...)
declare void @__cxa_end_catch()
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
-@_ZTIi = external constant i8*
+@_ZTIi = external constant ptr
define void @throwException_B() {
- %exception = tail call i8* @__cxa_allocate_exception(i64 4)
- call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null)
+ %exception = tail call ptr @__cxa_allocate_exception(i64 4)
+ call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)
unreachable
}
-define i32 @FB() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i32 @FB() personality ptr @__gxx_personality_v0 {
entry:
invoke void @throwException_B()
to label %try.cont unwind label %lpad
lpad:
- %p = landingpad { i8*, i32 }
- catch i8* bitcast (i8** @_ZTIi to i8*)
- %e = extractvalue { i8*, i32 } %p, 0
- call i8* @__cxa_begin_catch(i8* %e)
+ %p = landingpad { ptr, i32 }
+ catch ptr @_ZTIi
+ %e = extractvalue { ptr, i32 } %p, 0
+ call ptr @__cxa_begin_catch(ptr %e)
call void @__cxa_end_catch()
br label %try.cont
ret i32 0
}
-define i8* @bar() {
+define ptr @bar() {
entry:
- ret i8* bitcast (i32 ()* @baz to i8*)
+ ret ptr @baz
}
; REQUIRES: cxx-shared-library
; RUN: %lli -jit-kind=mcjit -relocation-model=pic -code-model=large %s
; XFAIL: cygwin, windows-msvc, windows-gnu, mips-, mipsel-, i686, i386, aarch64, arm
-declare i8* @__cxa_allocate_exception(i64)
-declare void @__cxa_throw(i8*, i8*, i8*)
+declare ptr @__cxa_allocate_exception(i64)
+declare void @__cxa_throw(ptr, ptr, ptr)
declare i32 @__gxx_personality_v0(...)
declare void @__cxa_end_catch()
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
-@_ZTIi = external constant i8*
+@_ZTIi = external constant ptr
define void @throwException() {
- %exception = tail call i8* @__cxa_allocate_exception(i64 4)
- call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null)
+ %exception = tail call ptr @__cxa_allocate_exception(i64 4)
+ call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)
unreachable
}
ret void
}
-define i32 @main() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i32 @main() personality ptr @__gxx_personality_v0 {
entry:
call void @use_gotoff()
invoke void @throwException()
to label %try.cont unwind label %lpad
lpad:
- %p = landingpad { i8*, i32 }
- catch i8* bitcast (i8** @_ZTIi to i8*)
- %e = extractvalue { i8*, i32 } %p, 0
- call i8* @__cxa_begin_catch(i8* %e)
+ %p = landingpad { ptr, i32 }
+ catch ptr @_ZTIi
+ %e = extractvalue { ptr, i32 } %p, 0
+ call ptr @__cxa_begin_catch(ptr %e)
call void @__cxa_end_catch()
br label %try.cont
; RUN: %lli -jit-kind=mcjit %s
; XFAIL: arm, cygwin, windows-msvc, windows-gnu
-declare i8* @__cxa_allocate_exception(i64)
-declare void @__cxa_throw(i8*, i8*, i8*)
+declare ptr @__cxa_allocate_exception(i64)
+declare void @__cxa_throw(ptr, ptr, ptr)
declare i32 @__gxx_personality_v0(...)
declare void @__cxa_end_catch()
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
-@_ZTIi = external constant i8*
+@_ZTIi = external constant ptr
define void @throwException() {
- %exception = tail call i8* @__cxa_allocate_exception(i64 4)
- call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null)
+ %exception = tail call ptr @__cxa_allocate_exception(i64 4)
+ call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)
unreachable
}
-define i32 @main() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i32 @main() personality ptr @__gxx_personality_v0 {
entry:
invoke void @throwException()
to label %try.cont unwind label %lpad
lpad:
- %p = landingpad { i8*, i32 }
- catch i8* bitcast (i8** @_ZTIi to i8*)
- %e = extractvalue { i8*, i32 } %p, 0
- call i8* @__cxa_begin_catch(i8* %e)
+ %p = landingpad { ptr, i32 }
+ catch ptr @_ZTIi
+ %e = extractvalue { ptr, i32 } %p, 0
+ call ptr @__cxa_begin_catch(ptr %e)
call void @__cxa_end_catch()
br label %try.cont
define i32 @main()
{
%res = call i32 @test(double 3.14)
- %ptr = getelementptr [4 x i8], [4 x i8]* @format, i32 0, i32 0
- call i32 (i8*,...) @printf(i8* %ptr, i32 %res)
+ call i32 (ptr,...) @printf(ptr @format, i32 %res)
ret i32 0
}
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
@format = internal constant [4 x i8] c"%x\0A\00"
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-@.LC0 = internal global [12 x i8] c"Hello World\00" ; <[12 x i8]*> [#uses=1]
+@.LC0 = internal global [12 x i8] c"Hello World\00" ; <ptr> [#uses=1]
-declare i32 @puts(i8*)
+declare i32 @puts(ptr)
define i32 @main() {
- %reg210 = call i32 @puts( i8* getelementptr ([12 x i8], [12 x i8]* @.LC0, i64 0, i64 0) ) ; <i32> [#uses=0]
+ %reg210 = call i32 @puts( ptr @.LC0 ) ; <i32> [#uses=0]
ret i32 0
}
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-@X = global i32 7 ; <i32*> [#uses=0]
-@msg = internal global [13 x i8] c"Hello World\0A\00" ; <[13 x i8]*> [#uses=1]
+@X = global i32 7 ; <ptr> [#uses=0]
+@msg = internal global [13 x i8] c"Hello World\0A\00" ; <ptr> [#uses=1]
-declare void @printf([13 x i8]*, ...)
+declare void @printf(ptr, ...)
define void @bar() {
- call void ([13 x i8]*, ...) @printf( [13 x i8]* @msg )
+ call void (ptr, ...) @printf( ptr @msg )
ret void
}
; RUN: %lli -jit-kind=mcjit -extra-module=%p/Inputs/multi-module-eh-b.ll %s
; XFAIL: arm, cygwin, windows-msvc, windows-gnu
-declare i8* @__cxa_allocate_exception(i64)
-declare void @__cxa_throw(i8*, i8*, i8*)
+declare ptr @__cxa_allocate_exception(i64)
+declare void @__cxa_throw(ptr, ptr, ptr)
declare i32 @__gxx_personality_v0(...)
declare void @__cxa_end_catch()
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
-@_ZTIi = external constant i8*
+@_ZTIi = external constant ptr
declare i32 @FB()
define void @throwException() {
- %exception = tail call i8* @__cxa_allocate_exception(i64 4)
- call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null)
+ %exception = tail call ptr @__cxa_allocate_exception(i64 4)
+ call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)
unreachable
}
-define i32 @main() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i32 @main() personality ptr @__gxx_personality_v0 {
entry:
invoke void @throwException()
to label %try.cont unwind label %lpad
lpad:
- %p = landingpad { i8*, i32 }
- catch i8* bitcast (i8** @_ZTIi to i8*)
- %e = extractvalue { i8*, i32 } %p, 0
- call i8* @__cxa_begin_catch(i8* %e)
+ %p = landingpad { ptr, i32 }
+ catch ptr @_ZTIi
+ %e = extractvalue { ptr, i32 } %p, 0
+ call ptr @__cxa_begin_catch(ptr %e)
call void @__cxa_end_catch()
br label %try.cont
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- %0 = load i32, i32* @zero_int, align 4
+ store i32 0, ptr %retval
+ %0 = load i32, ptr @zero_int, align 4
%add = add nsw i32 %0, 5
%idxprom = sext i32 %add to i64
- %arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom
- store i32 40, i32* %arrayidx, align 4
- %1 = load double, double* @zero_double, align 8
+ %arrayidx = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom
+ store i32 40, ptr %arrayidx, align 4
+ %1 = load double, ptr @zero_double, align 8
%cmp = fcmp olt double %1, 1.100000e+00
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
- %2 = load i32, i32* @zero_int, align 4
+ %2 = load i32, ptr @zero_int, align 4
%add1 = add nsw i32 %2, 2
%idxprom2 = sext i32 %add1 to i64
- %arrayidx3 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom2
- store i32 70, i32* %arrayidx3, align 4
+ %arrayidx3 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom2
+ store i32 70, ptr %arrayidx3, align 4
br label %if.end
if.end: ; preds = %if.then, %entry
- store i32 1, i32* %i, align 4
+ store i32 1, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %if.end
- %3 = load i32, i32* %i, align 4
+ %3 = load i32, ptr %i, align 4
%cmp4 = icmp slt i32 %3, 10
br i1 %cmp4, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %4 = load i32, i32* %i, align 4
+ %4 = load i32, ptr %i, align 4
%sub = sub nsw i32 %4, 1
%idxprom5 = sext i32 %sub to i64
- %arrayidx6 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom5
- %5 = load i32, i32* %arrayidx6, align 4
- %6 = load i32, i32* %i, align 4
+ %arrayidx6 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom5
+ %5 = load i32, ptr %arrayidx6, align 4
+ %6 = load i32, ptr %i, align 4
%idxprom7 = sext i32 %6 to i64
- %arrayidx8 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom7
- %7 = load i32, i32* %arrayidx8, align 4
+ %arrayidx8 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom7
+ %7 = load i32, ptr %arrayidx8, align 4
%add9 = add nsw i32 %5, %7
- %8 = load i32, i32* %i, align 4
+ %8 = load i32, ptr %i, align 4
%idxprom10 = sext i32 %8 to i64
- %arrayidx11 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom10
- store i32 %add9, i32* %arrayidx11, align 4
+ %arrayidx11 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom10
+ store i32 %add9, ptr %arrayidx11, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %9 = load i32, i32* %i, align 4
+ %9 = load i32, ptr %i, align 4
%inc = add nsw i32 %9, 1
- store i32 %inc, i32* %i, align 4
+ store i32 %inc, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %10 = load i32, i32* getelementptr inbounds ([10 x i32], [10 x i32]* @zero_arr, i32 0, i64 9), align 4
+ %10 = load i32, ptr getelementptr inbounds ([10 x i32], ptr @zero_arr, i32 0, i64 9), align 4
%cmp12 = icmp eq i32 %10, 110
%cond = select i1 %cmp12, i32 0, i32 -1
ret i32 %cond
; Remove UNSUPPORTED for powerpc64-unknown-linux-gnu if problem caused by r266663 is fixed
; FIXME: Something hangs here.
; UNSUPPORTED: use_msan_with_origins
-declare i8* @__cxa_allocate_exception(i64)
-declare void @__cxa_throw(i8*, i8*, i8*)
+declare ptr @__cxa_allocate_exception(i64)
+declare void @__cxa_throw(ptr, ptr, ptr)
declare i32 @__gxx_personality_v0(...)
declare void @__cxa_end_catch()
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
-@_ZTIi = external constant i8*
+@_ZTIi = external constant ptr
define void @throwException() {
- %exception = tail call i8* @__cxa_allocate_exception(i64 4)
- call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null)
+ %exception = tail call ptr @__cxa_allocate_exception(i64 4)
+ call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)
unreachable
}
-define i32 @main() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i32 @main() personality ptr @__gxx_personality_v0 {
entry:
invoke void @throwException()
to label %try.cont unwind label %lpad
lpad:
- %p = landingpad { i8*, i32 }
- catch i8* bitcast (i8** @_ZTIi to i8*)
- %e = extractvalue { i8*, i32 } %p, 0
- call i8* @__cxa_begin_catch(i8* %e)
+ %p = landingpad { ptr, i32 }
+ catch ptr @_ZTIi
+ %e = extractvalue { ptr, i32 } %p, 0
+ call ptr @__cxa_begin_catch(ptr %e)
call void @__cxa_end_catch()
br label %try.cont
; Test PR3043: @test should have the same address before and after
; it's JIT-compiled.
-@funcPtr = common global i1 ()* null, align 4
+@funcPtr = common global ptr null, align 4
@lcaic_failure = internal constant [46 x i8] c"@lazily_compiled_address_is_consistent failed\00"
define void @lazily_compiled_address_is_consistent() nounwind {
entry:
- store i1 ()* @test, i1 ()** @funcPtr
+ store ptr @test, ptr @funcPtr
%pass = tail call i1 @test() ; <i32> [#uses=1]
br i1 %pass, label %pass_block, label %fail_block
pass_block:
ret void
fail_block:
- call i32 @puts(i8* getelementptr([46 x i8], [46 x i8]* @lcaic_failure, i32 0, i32 0))
+ call i32 @puts(ptr @lcaic_failure)
call void @exit(i32 1)
unreachable
}
define i1 @test() nounwind {
entry:
- %tmp = load i1 ()*, i1 ()** @funcPtr
- %eq = icmp eq i1 ()* %tmp, @test
+ %tmp = load ptr, ptr @funcPtr
+ %eq = icmp eq ptr %tmp, @test
ret i1 %eq
}
-declare i32 @puts(i8*) noreturn
+declare i32 @puts(ptr) noreturn
declare void @exit(i32) noreturn
; Test PR3043: @test should have the same address before and after
; it's JIT-compiled.
-@funcPtr = common global i1 ()* null, align 4
+@funcPtr = common global ptr null, align 4
@lcaic_failure = internal constant [46 x i8] c"@lazily_compiled_address_is_consistent failed\00"
define void @lazily_compiled_address_is_consistent() nounwind {
entry:
- store i1 ()* @test, i1 ()** @funcPtr
+ store ptr @test, ptr @funcPtr
%pass = tail call i1 @test() ; <i32> [#uses=1]
br i1 %pass, label %pass_block, label %fail_block
pass_block:
ret void
fail_block:
- call i32 @puts(i8* getelementptr([46 x i8], [46 x i8]* @lcaic_failure, i32 0, i32 0))
+ call i32 @puts(ptr @lcaic_failure)
call void @exit(i32 1)
unreachable
}
define i1 @test() nounwind {
entry:
- %tmp = load i1 ()*, i1 ()** @funcPtr
- %eq = icmp eq i1 ()* %tmp, @test
+ %tmp = load ptr, ptr @funcPtr
+ %eq = icmp eq ptr %tmp, @test
ret i1 %eq
}
-declare i32 @puts(i8*) noreturn
+declare i32 @puts(ptr) noreturn
declare void @exit(i32) noreturn
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- %0 = load i32, i32* @zero_int, align 4
+ store i32 0, ptr %retval
+ %0 = load i32, ptr @zero_int, align 4
%add = add nsw i32 %0, 5
%idxprom = sext i32 %add to i64
- %arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom
- store i32 40, i32* %arrayidx, align 4
- %1 = load double, double* @zero_double, align 8
+ %arrayidx = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom
+ store i32 40, ptr %arrayidx, align 4
+ %1 = load double, ptr @zero_double, align 8
%cmp = fcmp olt double %1, 1.000000e+00
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
- %2 = load i32, i32* @zero_int, align 4
+ %2 = load i32, ptr @zero_int, align 4
%add1 = add nsw i32 %2, 2
%idxprom2 = sext i32 %add1 to i64
- %arrayidx3 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom2
- store i32 70, i32* %arrayidx3, align 4
+ %arrayidx3 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom2
+ store i32 70, ptr %arrayidx3, align 4
br label %if.end
if.end: ; preds = %if.then, %entry
- store i32 1, i32* %i, align 4
+ store i32 1, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %if.end
- %3 = load i32, i32* %i, align 4
+ %3 = load i32, ptr %i, align 4
%cmp4 = icmp slt i32 %3, 10
br i1 %cmp4, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %4 = load i32, i32* %i, align 4
+ %4 = load i32, ptr %i, align 4
%sub = sub nsw i32 %4, 1
%idxprom5 = sext i32 %sub to i64
- %arrayidx6 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom5
- %5 = load i32, i32* %arrayidx6, align 4
- %6 = load i32, i32* %i, align 4
+ %arrayidx6 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom5
+ %5 = load i32, ptr %arrayidx6, align 4
+ %6 = load i32, ptr %i, align 4
%idxprom7 = sext i32 %6 to i64
- %arrayidx8 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom7
- %7 = load i32, i32* %arrayidx8, align 4
+ %arrayidx8 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom7
+ %7 = load i32, ptr %arrayidx8, align 4
%add9 = add nsw i32 %5, %7
- %8 = load i32, i32* %i, align 4
+ %8 = load i32, ptr %i, align 4
%idxprom10 = sext i32 %8 to i64
- %arrayidx11 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom10
- store i32 %add9, i32* %arrayidx11, align 4
+ %arrayidx11 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom10
+ store i32 %add9, ptr %arrayidx11, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %9 = load i32, i32* %i, align 4
+ %9 = load i32, ptr %i, align 4
%inc = add nsw i32 %9, 1
- store i32 %inc, i32* %i, align 4
+ store i32 %inc, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %10 = load i32, i32* getelementptr inbounds ([10 x i32], [10 x i32]* @zero_arr, i32 0, i64 9), align 4
+ %10 = load i32, ptr getelementptr inbounds ([10 x i32], ptr @zero_arr, i32 0, i64 9), align 4
%cmp12 = icmp eq i32 %10, 110
%cond = select i1 %cmp12, i32 0, i32 -1
ret i32 %cond
@var = global i32 0, align 32
define i32 @main() nounwind {
- %addr = ptrtoint i32* @var to i64
+ %addr = ptrtoint ptr @var to i64
%mask = and i64 %addr, 31
%tst = icmp eq i64 %mask, 0
br i1 %tst, label %good, label %bad
; UNSUPPORTED: powerpc64-unknown-linux-gnu
; Remove UNSUPPORTED for powerpc64-unknown-linux-gnu if problem caused by r266663 is fixed
-define double @test(double* %DP, double %Arg) nounwind {
- %D = load double, double* %DP ; <double> [#uses=1]
+define double @test(ptr %DP, double %Arg) nounwind {
+ %D = load double, ptr %DP ; <double> [#uses=1]
%V = fadd double %D, 1.000000e+00 ; <double> [#uses=2]
%W = fsub double %V, %V ; <double> [#uses=3]
%X = fmul double %W, %W ; <double> [#uses=2]
%Y = fdiv double %X, %X ; <double> [#uses=2]
%Q = fadd double %Y, %Arg ; <double> [#uses=1]
%R = bitcast double %Q to double ; <double> [#uses=1]
- store double %Q, double* %DP
+ store double %Q, ptr %DP
ret double %Y
}
define i32 @main() nounwind {
- %X = alloca double ; <double*> [#uses=2]
- store double 0.000000e+00, double* %X
- call double @test( double* %X, double 2.000000e+00 ) ; <double>:1 [#uses=0]
+ %X = alloca double ; <ptr> [#uses=2]
+ store double 0.000000e+00, ptr %X
+ call double @test( ptr %X, double 2.000000e+00 ) ; <double>:1 [#uses=0]
ret i32 0
}
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- store i32 0, i32* %i, align 4
+ store i32 0, ptr %retval
+ store i32 0, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %entry
- %0 = load i32, i32* %i, align 4
+ %0 = load i32, ptr %i, align 4
%cmp = icmp slt i32 %0, 49
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %1 = load i32, i32* @count, align 4
+ %1 = load i32, ptr @count, align 4
%inc = add nsw i32 %1, 1
- store i32 %inc, i32* @count, align 4
+ store i32 %inc, ptr @count, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %2 = load i32, i32* %i, align 4
+ %2 = load i32, ptr %i, align 4
%inc1 = add nsw i32 %2, 1
- store i32 %inc1, i32* %i, align 4
+ store i32 %inc1, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %3 = load i32, i32* @count, align 4
+ %3 = load i32, ptr @count, align 4
%sub = sub nsw i32 %3, 50
ret i32 %sub
}
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- store i32 0, i32* %i, align 4
+ store i32 0, ptr %retval
+ store i32 0, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %entry
- %0 = load i32, i32* %i, align 4
+ %0 = load i32, ptr %i, align 4
%cmp = icmp slt i32 %0, 49
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %1 = load i32, i32* @count, align 4
+ %1 = load i32, ptr @count, align 4
%inc = add nsw i32 %1, 1
- store i32 %inc, i32* @count, align 4
+ store i32 %inc, ptr @count, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %2 = load i32, i32* %i, align 4
+ %2 = load i32, ptr %i, align 4
%inc1 = add nsw i32 %2, 1
- store i32 %inc1, i32* %i, align 4
+ store i32 %inc1, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %3 = load i32, i32* @count, align 4
+ %3 = load i32, ptr @count, align 4
%sub = sub nsw i32 %3, 50
ret i32 %sub
}
; Remove UNSUPPORTED for powerpc64-unknown-linux-gnu if problem caused by r266663 is fixed
@.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1
-@ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4
+@ptr = global ptr @.str, align 4
@.str1 = private unnamed_addr constant [6 x i8] c"data2\00", align 1
-@ptr2 = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str1, i32 0, i32 0), align 4
+@ptr2 = global ptr @.str1, align 4
-define i32 @main(i32 %argc, i8** nocapture %argv) nounwind readonly {
+define i32 @main(i32 %argc, ptr nocapture %argv) nounwind readonly {
entry:
- %0 = load i8*, i8** @ptr, align 4
- %1 = load i8*, i8** @ptr2, align 4
- %cmp = icmp eq i8* %0, %1
+ %0 = load ptr, ptr @ptr, align 4
+ %1 = load ptr, ptr @ptr2, align 4
+ %cmp = icmp eq ptr %0, %1
%. = zext i1 %cmp to i32
ret i32 %.
}
; Remove UNSUPPORTED for powerpc64-unknown-linux-gnu if problem caused by r266663 is fixed
@.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1
-@ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4
+@ptr = global ptr @.str, align 4
@.str1 = private unnamed_addr constant [6 x i8] c"data2\00", align 1
-@ptr2 = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str1, i32 0, i32 0), align 4
+@ptr2 = global ptr @.str1, align 4
-define i32 @main(i32 %argc, i8** nocapture %argv) nounwind readonly {
+define i32 @main(i32 %argc, ptr nocapture %argv) nounwind readonly {
entry:
- %0 = load i8*, i8** @ptr, align 4
- %1 = load i8*, i8** @ptr2, align 4
- %cmp = icmp eq i8* %0, %1
+ %0 = load ptr, ptr @ptr, align 4
+ %1 = load ptr, ptr @ptr2, align 4
+ %cmp = icmp eq ptr %0, %1
%. = zext i1 %cmp to i32
ret i32 %.
}
; Test PR3043: @test should have the same address before and after
; it's JIT-compiled.
-@funcPtr = common global i1 ()* null, align 4
+@funcPtr = common global ptr null, align 4
@lcaic_failure = internal constant [46 x i8] c"@lazily_compiled_address_is_consistent failed\00"
define void @lazily_compiled_address_is_consistent() nounwind {
entry:
- store i1 ()* @test, i1 ()** @funcPtr
+ store ptr @test, ptr @funcPtr
%pass = tail call i1 @test() ; <i32> [#uses=1]
br i1 %pass, label %pass_block, label %fail_block
pass_block:
ret void
fail_block:
- call i32 @puts(i8* getelementptr([46 x i8], [46 x i8]* @lcaic_failure, i32 0, i32 0))
+ call i32 @puts(ptr @lcaic_failure)
call void @exit(i32 1)
unreachable
}
define i1 @test() nounwind {
entry:
- %tmp = load i1 ()*, i1 ()** @funcPtr
- %eq = icmp eq i1 ()* %tmp, @test
+ %tmp = load ptr, ptr @funcPtr
+ %eq = icmp eq ptr %tmp, @test
ret i1 %eq
}
-declare i32 @puts(i8*) noreturn
+declare i32 @puts(ptr) noreturn
declare void @exit(i32) noreturn
; Test PR3043: @test should have the same address before and after
; it's JIT-compiled.
-@funcPtr = common global i1 ()* null, align 4
+@funcPtr = common global ptr null, align 4
@lcaic_failure = internal constant [46 x i8] c"@lazily_compiled_address_is_consistent failed\00"
define void @lazily_compiled_address_is_consistent() nounwind {
entry:
- store i1 ()* @test, i1 ()** @funcPtr
+ store ptr @test, ptr @funcPtr
%pass = tail call i1 @test() ; <i32> [#uses=1]
br i1 %pass, label %pass_block, label %fail_block
pass_block:
ret void
fail_block:
- call i32 @puts(i8* getelementptr([46 x i8], [46 x i8]* @lcaic_failure, i32 0, i32 0))
+ call i32 @puts(ptr @lcaic_failure)
call void @exit(i32 1)
unreachable
}
define i1 @test() nounwind {
entry:
- %tmp = load i1 ()*, i1 ()** @funcPtr
- %eq = icmp eq i1 ()* %tmp, @test
+ %tmp = load ptr, ptr @funcPtr
+ %eq = icmp eq ptr %tmp, @test
ret i1 %eq
}
-declare i32 @puts(i8*) noreturn
+declare i32 @puts(ptr) noreturn
declare void @exit(i32) noreturn
define i32 @main() nounwind uwtable {
entry:
%retval = alloca i32, align 4
- store i32 0, i32* %retval
+ store i32 0, ptr %retval
%call = call i32 @_Z14func_exit_codev()
ret i32 %call
}
ret i32 %Y
}
-define void @FP(void (i32)* %F) {
+define void @FP(ptr %F) {
%X = call i32 @test( i8 123, i16 1024 ) ; <i32> [#uses=1]
call void %F( i32 %X )
ret void
}
define i32 @main() {
- call void @FP( void (i32)* @exit )
+ call void @FP( ptr @exit )
ret i32 1
}
entry:
%retval = alloca i32, align 4
%ptr = alloca i32, align 4
- store i32 0, i32* %retval
- store i32 ptrtoint (i32* @CS3 to i32), i32* %ptr, align 4
- %0 = load i32, i32* %ptr, align 4
+ store i32 0, ptr %retval
+ store i32 ptrtoint (ptr @CS3 to i32), ptr %ptr, align 4
+ %0 = load i32, ptr %ptr, align 4
%and = and i32 %0, 15
%tobool = icmp ne i32 %and, 0
br i1 %tobool, label %if.then, label %if.else
if.then: ; preds = %entry
- store i32 1, i32* %retval
+ store i32 1, ptr %retval
br label %return
if.else: ; preds = %entry
- store i32 0, i32* %retval
+ store i32 0, ptr %retval
br label %return
return: ; preds = %if.else, %if.then
- %1 = load i32, i32* %retval
+ %1 = load i32, ptr %retval
ret i32 %1
}
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- %0 = load i32, i32* @zero_int, align 4
+ store i32 0, ptr %retval
+ %0 = load i32, ptr @zero_int, align 4
%add = add nsw i32 %0, 5
%idxprom = sext i32 %add to i64
- %arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom
- store i32 40, i32* %arrayidx, align 4
- %1 = load double, double* @zero_double, align 8
+ %arrayidx = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom
+ store i32 40, ptr %arrayidx, align 4
+ %1 = load double, ptr @zero_double, align 8
%cmp = fcmp olt double %1, 1.000000e+00
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
- %2 = load i32, i32* @zero_int, align 4
+ %2 = load i32, ptr @zero_int, align 4
%add1 = add nsw i32 %2, 2
%idxprom2 = sext i32 %add1 to i64
- %arrayidx3 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom2
- store i32 70, i32* %arrayidx3, align 4
+ %arrayidx3 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom2
+ store i32 70, ptr %arrayidx3, align 4
br label %if.end
if.end: ; preds = %if.then, %entry
- store i32 1, i32* %i, align 4
+ store i32 1, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %if.end
- %3 = load i32, i32* %i, align 4
+ %3 = load i32, ptr %i, align 4
%cmp4 = icmp slt i32 %3, 10
br i1 %cmp4, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %4 = load i32, i32* %i, align 4
+ %4 = load i32, ptr %i, align 4
%sub = sub nsw i32 %4, 1
%idxprom5 = sext i32 %sub to i64
- %arrayidx6 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom5
- %5 = load i32, i32* %arrayidx6, align 4
- %6 = load i32, i32* %i, align 4
+ %arrayidx6 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom5
+ %5 = load i32, ptr %arrayidx6, align 4
+ %6 = load i32, ptr %i, align 4
%idxprom7 = sext i32 %6 to i64
- %arrayidx8 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom7
- %7 = load i32, i32* %arrayidx8, align 4
+ %arrayidx8 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom7
+ %7 = load i32, ptr %arrayidx8, align 4
%add9 = add nsw i32 %5, %7
- %8 = load i32, i32* %i, align 4
+ %8 = load i32, ptr %i, align 4
%idxprom10 = sext i32 %8 to i64
- %arrayidx11 = getelementptr inbounds [10 x i32], [10 x i32]* @zero_arr, i32 0, i64 %idxprom10
- store i32 %add9, i32* %arrayidx11, align 4
+ %arrayidx11 = getelementptr inbounds [10 x i32], ptr @zero_arr, i32 0, i64 %idxprom10
+ store i32 %add9, ptr %arrayidx11, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %9 = load i32, i32* %i, align 4
+ %9 = load i32, ptr %i, align 4
%inc = add nsw i32 %9, 1
- store i32 %inc, i32* %i, align 4
+ store i32 %inc, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %10 = load i32, i32* getelementptr inbounds ([10 x i32], [10 x i32]* @zero_arr, i32 0, i64 9), align 4
+ %10 = load i32, ptr getelementptr inbounds ([10 x i32], ptr @zero_arr, i32 0, i64 9), align 4
%cmp12 = icmp eq i32 %10, 110
%cond = select i1 %cmp12, i32 0, i32 -1
ret i32 %cond
; This tests to make sure that we can evaluate weird constant expressions
-@A = global i32 5 ; <i32*> [#uses=1]
-@B = global i32 6 ; <i32*> [#uses=1]
+@A = global i32 5 ; <ptr> [#uses=1]
+@B = global i32 6 ; <ptr> [#uses=1]
define i32 @main() {
- %A = or i1 false, icmp slt (i32* @A, i32* @B) ; <i1> [#uses=0]
+ %A = or i1 false, icmp slt (ptr @A, ptr @B) ; <i1> [#uses=0]
ret i32 0
}
@var = global i32 0, align 32
define i32 @main() {
- %addr = ptrtoint i32* @var to i64
+ %addr = ptrtoint ptr @var to i64
%mask = and i64 %addr, 31
%tst = icmp eq i64 %mask, 0
br i1 %tst, label %good, label %bad
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-define double @test(double* %DP, double %Arg) {
- %D = load double, double* %DP ; <double> [#uses=1]
+define double @test(ptr %DP, double %Arg) {
+ %D = load double, ptr %DP ; <double> [#uses=1]
%V = fadd double %D, 1.000000e+00 ; <double> [#uses=2]
%W = fsub double %V, %V ; <double> [#uses=3]
%X = fmul double %W, %W ; <double> [#uses=2]
%Y = fdiv double %X, %X ; <double> [#uses=2]
%Q = fadd double %Y, %Arg ; <double> [#uses=1]
%R = bitcast double %Q to double ; <double> [#uses=1]
- store double %Q, double* %DP
+ store double %Q, ptr %DP
ret double %Y
}
define i32 @main() {
- %X = alloca double ; <double*> [#uses=2]
- store double 0.000000e+00, double* %X
- call double @test( double* %X, double 2.000000e+00 ) ; <double>:1 [#uses=0]
+ %X = alloca double ; <ptr> [#uses=2]
+ store double 0.000000e+00, ptr %X
+ call double @test( ptr %X, double 2.000000e+00 ) ; <double>:1 [#uses=0]
ret i32 0
}
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-define double @test(double* %DP, double %Arg) {
- %D = load double, double* %DP ; <double> [#uses=1]
+define double @test(ptr %DP, double %Arg) {
+ %D = load double, ptr %DP ; <double> [#uses=1]
%V = fadd double %D, 1.000000e+00 ; <double> [#uses=2]
%W = fsub double %V, %V ; <double> [#uses=3]
%X = fmul double %W, %W ; <double> [#uses=2]
%Z1 = fdiv double %Z, %W ; <double> [#uses=0]
%Q = fadd double %Z, %Arg ; <double> [#uses=1]
%R = bitcast double %Q to double ; <double> [#uses=1]
- store double %R, double* %DP
+ store double %R, ptr %DP
ret double %Z
}
define i32 @main() {
- %X = alloca double ; <double*> [#uses=2]
- store double 0.000000e+00, double* %X
- call double @test( double* %X, double 2.000000e+00 ) ; <double>:1 [#uses=0]
+ %X = alloca double ; <ptr> [#uses=2]
+ store double 0.000000e+00, ptr %X
+ call double @test( ptr %X, double 2.000000e+00 ) ; <double>:1 [#uses=0]
ret i32 0
}
; RUN: %lli %s > /dev/null
; UNSUPPORTED: darwin
@var = global i32 1, align 4
-@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @ctor_func, i8* null }]
-@llvm.global_dtors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @dtor_func, i8* null }]
+@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @ctor_func, ptr null }]
+@llvm.global_dtors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @dtor_func, ptr null }]
define i32 @main() nounwind {
entry:
- %0 = load i32, i32* @var, align 4
+ %0 = load i32, ptr @var, align 4
ret i32 %0
}
define internal void @ctor_func() section ".text.startup" {
entry:
- store i32 0, i32* @var, align 4
+ store i32 0, ptr @var, align 4
ret void
}
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- store i32 0, i32* %i, align 4
+ store i32 0, ptr %retval
+ store i32 0, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %entry
- %0 = load i32, i32* %i, align 4
+ %0 = load i32, ptr %i, align 4
%cmp = icmp slt i32 %0, 49
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %1 = load i32, i32* @count, align 4
+ %1 = load i32, ptr @count, align 4
%inc = add nsw i32 %1, 1
- store i32 %inc, i32* @count, align 4
+ store i32 %inc, ptr @count, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %2 = load i32, i32* %i, align 4
+ %2 = load i32, ptr %i, align 4
%inc1 = add nsw i32 %2, 1
- store i32 %inc1, i32* %i, align 4
+ store i32 %inc1, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %3 = load i32, i32* @count, align 4
+ %3 = load i32, ptr @count, align 4
%sub = sub nsw i32 %3, 50
ret i32 %sub
}
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- store i32 0, i32* %i, align 4
+ store i32 0, ptr %retval
+ store i32 0, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %entry
- %0 = load i32, i32* %i, align 4
+ %0 = load i32, ptr %i, align 4
%cmp = icmp slt i32 %0, 49
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %1 = load i32, i32* @count, align 4
+ %1 = load i32, ptr @count, align 4
%inc = add nsw i32 %1, 1
- store i32 %inc, i32* @count, align 4
+ store i32 %inc, ptr @count, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %2 = load i32, i32* %i, align 4
+ %2 = load i32, ptr %i, align 4
%inc1 = add nsw i32 %2, 1
- store i32 %inc1, i32* %i, align 4
+ store i32 %inc1, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %3 = load i32, i32* @count, align 4
+ %3 = load i32, ptr @count, align 4
%sub = sub nsw i32 %3, 50
ret i32 %sub
}
entry:
%retval = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- store i32 0, i32* %i, align 4
+ store i32 0, ptr %retval
+ store i32 0, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %entry
- %0 = load i32, i32* %i, align 4
+ %0 = load i32, ptr %i, align 4
%cmp = icmp slt i32 %0, 50
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %1 = load i32, i32* @count, align 4
+ %1 = load i32, ptr @count, align 4
%inc = add nsw i32 %1, 1
- store i32 %inc, i32* @count, align 4
+ store i32 %inc, ptr @count, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %2 = load i32, i32* %i, align 4
+ %2 = load i32, ptr %i, align 4
%inc1 = add nsw i32 %2, 1
- store i32 %inc1, i32* %i, align 4
+ store i32 %inc1, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %3 = load i32, i32* @count, align 4
+ %3 = load i32, ptr @count, align 4
%sub = sub nsw i32 %3, 50
ret i32 %sub
}
; RUN: %lli -jit-kind=mcjit %s > /dev/null
; RUN: %lli %s > /dev/null
-define void @test(i8* %P, i16* %P.upgrd.1, i32* %P.upgrd.2, i64* %P.upgrd.3) {
- %V = load i8, i8* %P ; <i8> [#uses=1]
- store i8 %V, i8* %P
- %V.upgrd.4 = load i16, i16* %P.upgrd.1 ; <i16> [#uses=1]
- store i16 %V.upgrd.4, i16* %P.upgrd.1
- %V.upgrd.5 = load i32, i32* %P.upgrd.2 ; <i32> [#uses=1]
- store i32 %V.upgrd.5, i32* %P.upgrd.2
- %V.upgrd.6 = load i64, i64* %P.upgrd.3 ; <i64> [#uses=1]
- store i64 %V.upgrd.6, i64* %P.upgrd.3
+define void @test(ptr %P, ptr %P.upgrd.1, ptr %P.upgrd.2, ptr %P.upgrd.3) {
+ %V = load i8, ptr %P ; <i8> [#uses=1]
+ store i8 %V, ptr %P
+ %V.upgrd.4 = load i16, ptr %P.upgrd.1 ; <i16> [#uses=1]
+ store i16 %V.upgrd.4, ptr %P.upgrd.1
+ %V.upgrd.5 = load i32, ptr %P.upgrd.2 ; <i32> [#uses=1]
+ store i32 %V.upgrd.5, ptr %P.upgrd.2
+ %V.upgrd.6 = load i64, ptr %P.upgrd.3 ; <i64> [#uses=1]
+ store i64 %V.upgrd.6, ptr %P.upgrd.3
ret void
}
define i32 @varalloca(i32 %Size) {
;; Variable sized alloca
- %X = alloca i32, i32 %Size ; <i32*> [#uses=2]
- store i32 %Size, i32* %X
- %Y = load i32, i32* %X ; <i32> [#uses=1]
+ %X = alloca i32, i32 %Size ; <ptr> [#uses=2]
+ store i32 %Size, ptr %X
+ %Y = load i32, ptr %X ; <i32> [#uses=1]
ret i32 %Y
}
define i32 @main() {
- %A = alloca i8 ; <i8*> [#uses=1]
- %B = alloca i16 ; <i16*> [#uses=1]
- %C = alloca i32 ; <i32*> [#uses=1]
- %D = alloca i64 ; <i64*> [#uses=1]
- call void @test( i8* %A, i16* %B, i32* %C, i64* %D )
+ %A = alloca i8 ; <ptr> [#uses=1]
+ %B = alloca i16 ; <ptr> [#uses=1]
+ %C = alloca i32 ; <ptr> [#uses=1]
+ %D = alloca i64 ; <ptr> [#uses=1]
+ call void @test( ptr %A, ptr %B, ptr %C, ptr %D )
call i32 @varalloca( i32 7 ) ; <i32>:1 [#uses=0]
ret i32 0
}
%retval = alloca i32, align 4
%count = alloca i32, align 4
%i = alloca i32, align 4
- store i32 0, i32* %retval
- store i32 0, i32* %count, align 4
- store i32 0, i32* %i, align 4
+ store i32 0, ptr %retval
+ store i32 0, ptr %count, align 4
+ store i32 0, ptr %i, align 4
br label %for.cond
for.cond: ; preds = %for.inc, %entry
- %0 = load i32, i32* %i, align 4
+ %0 = load i32, ptr %i, align 4
%cmp = icmp slt i32 %0, 50
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- %1 = load i32, i32* %count, align 4
+ %1 = load i32, ptr %count, align 4
%inc = add nsw i32 %1, 1
- store i32 %inc, i32* %count, align 4
+ store i32 %inc, ptr %count, align 4
br label %for.inc
for.inc: ; preds = %for.body
- %2 = load i32, i32* %i, align 4
+ %2 = load i32, ptr %i, align 4
%inc1 = add nsw i32 %2, 1
- store i32 %inc1, i32* %i, align 4
+ store i32 %inc1, ptr %i, align 4
br label %for.cond
for.end: ; preds = %for.cond
- %3 = load i32, i32* %count, align 4
+ %3 = load i32, ptr %count, align 4
%sub = sub nsw i32 %3, 50
ret i32 %sub
}
; RUN: %lli %s > /dev/null
; test phi node
-@Y = global i32 6 ; <i32*> [#uses=1]
+@Y = global i32 6 ; <ptr> [#uses=1]
-define void @blah(i32* %X) {
+define void @blah(ptr %X) {
; <label>:0
br label %T
T: ; preds = %Dead, %0
- phi i32* [ %X, %0 ], [ @Y, %Dead ] ; <i32*>:1 [#uses=0]
+ phi ptr [ %X, %0 ], [ @Y, %Dead ] ; <ptr>:1 [#uses=0]
ret void
Dead: ; No predecessors!
br label %T
; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386
@.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1
-@ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4
+@ptr = global ptr @.str, align 4
@.str1 = private unnamed_addr constant [6 x i8] c"data2\00", align 1
-@ptr2 = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str1, i32 0, i32 0), align 4
+@ptr2 = global ptr @.str1, align 4
-define i32 @main(i32 %argc, i8** nocapture %argv) nounwind readonly {
+define i32 @main(i32 %argc, ptr nocapture %argv) nounwind readonly {
entry:
- %0 = load i8*, i8** @ptr, align 4
- %1 = load i8*, i8** @ptr2, align 4
- %cmp = icmp eq i8* %0, %1
+ %0 = load ptr, ptr @ptr, align 4
+ %1 = load ptr, ptr @ptr2, align 4
+ %cmp = icmp eq ptr %0, %1
%. = zext i1 %cmp to i32
ret i32 %.
}
; RUN: %lli -O0 %s
@.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1
-@ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4
+@ptr = global ptr @.str, align 4
@.str1 = private unnamed_addr constant [6 x i8] c"data2\00", align 1
-@ptr2 = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str1, i32 0, i32 0), align 4
+@ptr2 = global ptr @.str1, align 4
-define i32 @main(i32 %argc, i8** nocapture %argv) nounwind readonly {
+define i32 @main(i32 %argc, ptr nocapture %argv) nounwind readonly {
entry:
- %0 = load i8*, i8** @ptr, align 4
- %1 = load i8*, i8** @ptr2, align 4
- %cmp = icmp eq i8* %0, %1
+ %0 = load ptr, ptr @ptr, align 4
+ %1 = load ptr, ptr @ptr2, align 4
+ %cmp = icmp eq ptr %0, %1
%. = zext i1 %cmp to i32
ret i32 %.
}
define i32 @main() nounwind uwtable {
entry:
%retval = alloca i32, align 4
- store i32 0, i32* %retval
+ store i32 0, ptr %retval
ret i32 0
}
ret i32 0
}
-define i8* @foo() {
+define ptr @foo() {
entry:
- ret i8* bitcast (i32 ()* @baz to i8*)
+ ret ptr @baz
}
-declare i8* @bar()
+declare ptr @bar()
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
- %call = tail call i8* @foo()
- %call1 = tail call i8* @bar()
- %cmp = icmp ne i8* %call, %call1
+ %call = tail call ptr @foo()
+ %call1 = tail call ptr @bar()
+ %cmp = icmp ne ptr %call, %call1
%conv = zext i1 %cmp to i32
ret i32 %conv
}
;
; CHECK: constructor
-declare i32 @puts(i8*)
+declare i32 @puts(ptr)
@.str = private constant [12 x i8] c"constructor\00"
-@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* bitcast (i32 ()* @constructor to void ()*), i8* null }]
+@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @constructor, ptr null }]
define internal i32 @constructor() #0 {
- %call = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
+ %call = tail call i32 @puts(ptr @.str)
ret i32 0
}
; Can be used as an entry point for tests that rely purely on static
; initializer side-effects.
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
ret i32 0
}
ret i32 0
}
-define i8* @bar() {
+define ptr @bar() {
entry:
- ret i8* bitcast (i32 ()* @baz to i8*)
+ ret ptr @baz
}
ret void
}
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) {
entry:
call void @0()
tail call void @"\01L_foo"()
; Test that bad object files yield an error.
; CHECK: The file was not recognized as a valid object file
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
ret i32 0
}
declare i32 @foo()
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
%0 = call i32 @foo()
ret i32 %0
ret void
}
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) {
entry:
ret i32 0
}
define i32 @main() {
entry:
%retval = alloca i32, align 4
- store i32 0, i32* %retval, align 4
- store i32 7, i32* @x, align 4
- %0 = load i32, i32* @x, align 4
- %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %0)
+ store i32 0, ptr %retval, align 4
+ store i32 7, ptr @x, align 4
+ %0 = load i32, ptr @x, align 4
+ %call = call i32 (ptr, ...) @printf(ptr @.str, i32 %0)
ret i32 0
}
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
target triple = "x86_64-unknown-unknown-elf"
; Built-in symbol provided by the JIT
-declare void @__dump_jit_debug_descriptor(i8*)
+declare void @__dump_jit_debug_descriptor(ptr)
; Host-process symbol from the GDB JIT interface
@__jit_debug_descriptor = external global i8, align 1
define i32 @main() !dbg !9 {
%1 = alloca i32, align 4
- store i32 0, i32* %1, align 4
- call void @__dump_jit_debug_descriptor(i8* @__jit_debug_descriptor), !dbg !13
+ store i32 0, ptr %1, align 4
+ call void @__dump_jit_debug_descriptor(ptr @__jit_debug_descriptor), !dbg !13
ret i32 0, !dbg !14
}
target triple = "x86_64-unknown-unknown-elf"
; Built-in symbol provided by the JIT
-declare void @__dump_jit_debug_objects(i8*)
+declare void @__dump_jit_debug_objects(ptr)
; Host-process symbol from the GDB JIT interface
@__jit_debug_descriptor = external global i8, align 1
define i32 @main() !dbg !9 {
%1 = alloca i32, align 4
- store i32 0, i32* %1, align 4
- call void @__dump_jit_debug_objects(i8* @__jit_debug_descriptor), !dbg !13
+ store i32 0, ptr %1, align 4
+ call void @__dump_jit_debug_objects(ptr @__jit_debug_descriptor), !dbg !13
ret i32 0, !dbg !14
}
@x = thread_local global i32 42, align 4
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
- %0 = load i32, i32* @x, align 4
+ %0 = load i32, ptr @x, align 4
ret i32 %0
}
@f = global %class.Foo zeroinitializer, align 1
@__dso_handle = external global i8
-@llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_hello.cpp, i8* null }, { i32, void ()*, i8* } { i32 1024, void ()* @constructor, i8* null }]
-@llvm.global_dtors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @printf_wrapper, i8* null }]
+@llvm.global_ctors = appending global [2 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_hello.cpp, ptr null }, { i32, ptr, ptr } { i32 1024, ptr @constructor, ptr null }]
+@llvm.global_dtors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @printf_wrapper, ptr null }]
@str = private unnamed_addr constant [6 x i8] c"Hello\00"
@str2 = private unnamed_addr constant [23 x i8] c"Hello from constructor\00"
@str3 = private unnamed_addr constant [24 x i8] c"Goodbye from destructor\00"
@str5 = global [20 x i8] c"Goodbye from atexit\00"
-define linkonce_odr void @_ZN3FooD1Ev(%class.Foo* nocapture readnone %this) unnamed_addr align 2 {
+define linkonce_odr void @_ZN3FooD1Ev(ptr nocapture readnone %this) unnamed_addr align 2 {
entry:
- %puts.i = tail call i32 @puts(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str4, i64 0, i64 0))
+ %puts.i = tail call i32 @puts(ptr @str4)
ret void
}
define void @atexit_handler() {
entry:
- %puts.i = tail call i32 @puts(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @str5, i64 0, i64 0))
+ %puts.i = tail call i32 @puts(ptr @str5)
ret void
}
-declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*)
+declare i32 @__cxa_atexit(ptr, ptr, ptr)
-declare i32 @atexit(void ()*)
+declare i32 @atexit(ptr)
define internal void @_GLOBAL__sub_I_hello.cpp() {
entry:
- %puts.i.i.i = tail call i32 @puts(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str, i64 0, i64 0))
- %0 = tail call i32 @__cxa_atexit(void (i8*)* bitcast (void (%class.Foo*)* @_ZN3FooD1Ev to void (i8*)*), i8* getelementptr inbounds (%class.Foo, %class.Foo* @f, i64 0, i32 0), i8* @__dso_handle)
- %1 = tail call i32 @atexit(void ()* @atexit_handler)
+ %puts.i.i.i = tail call i32 @puts(ptr @str)
+ %0 = tail call i32 @__cxa_atexit(ptr @_ZN3FooD1Ev, ptr @f, ptr @__dso_handle)
+ %1 = tail call i32 @atexit(ptr @atexit_handler)
ret void
}
define void @printf_wrapper() {
entry:
- %0 = tail call i32 @puts(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @str3, i64 0, i64 0))
+ %0 = tail call i32 @puts(ptr @str3)
ret void
}
-declare i32 @puts(i8* nocapture readonly)
+declare i32 @puts(ptr nocapture readonly)
define void @constructor() {
entry:
- %0 = tail call i32 @puts(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str2, i64 0, i64 0))
+ %0 = tail call i32 @puts(ptr @str2)
ret void
}
; Test handling of global aliases for function and variables.
@x = global i32 42, align 4
-@y = alias i32, i32* @x
+@y = alias i32, ptr @x
define i32 @foo() {
entry:
- %0 = load i32, i32* @y, align 4
+ %0 = load i32, ptr @y, align 4
ret i32 %0
}
-@bar = alias i32(), i32()* @foo
+@bar = alias i32(), ptr @foo
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
%0 = call i32() @bar()
%1 = sub i32 %0, 42
@bar = external global i32
declare i32 @foo()
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) {
entry:
%0 = call i32() @foo()
- %1 = load i32, i32* @bar
+ %1 = load i32, ptr @bar
%2 = add i32 %0, %1
ret i32 %2
}
declare i32 @foo()
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) {
entry:
%0 = call i32 @foo()
ret i32 %0
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.14.0"
-@_ZTIi = external constant i8*
+@_ZTIi = external constant ptr
-declare i8* @__cxa_allocate_exception(i64)
-declare void @__cxa_throw(i8*, i8*, i8*)
+declare ptr @__cxa_allocate_exception(i64)
+declare void @__cxa_throw(ptr, ptr, ptr)
declare i32 @__gxx_personality_v0(...)
-declare i32 @llvm.eh.typeid.for(i8*)
-declare i8* @__cxa_begin_catch(i8*)
+declare i32 @llvm.eh.typeid.for(ptr)
+declare ptr @__cxa_begin_catch(ptr)
declare void @__cxa_end_catch()
define void @explode() {
entry:
- %exception = tail call i8* @__cxa_allocate_exception(i64 4)
- %0 = bitcast i8* %exception to i32*
- store i32 42, i32* %0, align 16
- tail call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null)
+ %exception = tail call ptr @__cxa_allocate_exception(i64 4)
+ store i32 42, ptr %exception, align 16
+ tail call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)
unreachable
}
-define i32 @main(i32 %argc, i8** %argv) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i32 @main(i32 %argc, ptr %argv) personality ptr @__gxx_personality_v0 {
entry:
invoke void @explode()
to label %return unwind label %lpad
lpad:
- %0 = landingpad { i8*, i32 }
- catch i8* bitcast (i8** @_ZTIi to i8*)
- %1 = extractvalue { i8*, i32 } %0, 1
- %2 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*))
+ %0 = landingpad { ptr, i32 }
+ catch ptr @_ZTIi
+ %1 = extractvalue { ptr, i32 } %0, 1
+ %2 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi)
%matches = icmp eq i32 %1, %2
br i1 %matches, label %catch, label %eh.resume
catch:
- %3 = extractvalue { i8*, i32 } %0, 0
- %4 = tail call i8* @__cxa_begin_catch(i8* %3)
- %5 = bitcast i8* %4 to i32*
- %6 = load i32, i32* %5, align 4
- %cmp = icmp ne i32 %6, 42
+ %3 = extractvalue { ptr, i32 } %0, 0
+ %4 = tail call ptr @__cxa_begin_catch(ptr %3)
+ %5 = load i32, ptr %4, align 4
+ %cmp = icmp ne i32 %5, 42
%cond = zext i1 %cmp to i32
tail call void @__cxa_end_catch()
br label %return
ret i32 %retval.0
eh.resume:
- resume { i8*, i32 } %0
+ resume { ptr, i32 } %0
}
;
; Basic correctness check: A module with a single no-op main function runs.
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) {
entry:
ret i32 0
}
define void @hello() {
entry:
- %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i32 0, i32 0))
+ %call = call i32 (ptr, ...) @printf(ptr @.str)
ret void
}
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
ret i32 0
}
@.str.7 = private unnamed_addr constant [5 x i8] c"junk\00", align 1
@str.8 = private unnamed_addr constant [2 x i8] c"]\00", align 1
-define i32 @main(i32 %argc, i8** nocapture readonly %argv) {
+define i32 @main(i32 %argc, ptr nocapture readonly %argv) {
entry:
- %call = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %argc)
- %call1 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
+ %call = tail call i32 (ptr, ...) @printf(ptr @.str, i32 %argc)
+ %call1 = tail call i32 (ptr, ...) @printf(ptr @.str.1)
%cmp = icmp eq i32 %argc, 0
br i1 %cmp, label %if.then, label %if.end
if.then:
- %puts36 = tail call i32 @puts(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.8, i64 0, i64 0))
+ %puts36 = tail call i32 @puts(ptr @str.8)
br label %if.end
if.end:
- %0 = load i8*, i8** %argv, align 8
- %tobool = icmp eq i8* %0, null
+ %0 = load ptr, ptr %argv, align 8
+ %tobool = icmp eq ptr %0, null
br i1 %tobool, label %if.else, label %if.then3
if.then3:
- %call5 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %0)
+ %call5 = tail call i32 (ptr, ...) @printf(ptr @.str.3, ptr %0)
br label %if.end7
if.else:
- %call6 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
+ %call6 = tail call i32 (ptr, ...) @printf(ptr @.str.4)
br label %if.end7
if.end7:
br label %for.body
for.cond.cleanup:
- %puts = tail call i32 @puts(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.8, i64 0, i64 0))
+ %puts = tail call i32 @puts(ptr @str.8)
%idxprom19 = sext i32 %argc to i64
- %arrayidx20 = getelementptr inbounds i8*, i8** %argv, i64 %idxprom19
- %2 = load i8*, i8** %arrayidx20, align 8
- %tobool21 = icmp eq i8* %2, null
- %cond = select i1 %tobool21, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0)
- %call22 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0), i32 %argc, i8* %cond)
+ %arrayidx20 = getelementptr inbounds ptr, ptr %argv, i64 %idxprom19
+ %2 = load ptr, ptr %arrayidx20, align 8
+ %tobool21 = icmp eq ptr %2, null
+ %cond = select i1 %tobool21, ptr @.str.4, ptr @.str.7
+ %call22 = tail call i32 (ptr, ...) @printf(ptr @.str.6, i32 %argc, ptr %cond)
ret i32 0
for.body:
%indvars.iv = phi i64 [ 1, %for.body.preheader ], [ %indvars.iv.next, %for.inc ]
- %arrayidx9 = getelementptr inbounds i8*, i8** %argv, i64 %indvars.iv
- %3 = load i8*, i8** %arrayidx9, align 8
- %tobool10 = icmp eq i8* %3, null
+ %arrayidx9 = getelementptr inbounds ptr, ptr %argv, i64 %indvars.iv
+ %3 = load ptr, ptr %arrayidx9, align 8
+ %tobool10 = icmp eq ptr %3, null
br i1 %tobool10, label %if.else15, label %if.then11
if.then11:
- %call14 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), i8* %3)
+ %call14 = tail call i32 (ptr, ...) @printf(ptr @.str.5, ptr %3)
br label %for.inc
if.else15:
- %call16 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
+ %call16 = tail call i32 (ptr, ...) @printf(ptr @.str.4)
br label %for.inc
for.inc:
br i1 %cmp8, label %for.cond.cleanup, label %for.body
}
-declare i32 @printf(i8* nocapture readonly, ...)
+declare i32 @printf(ptr nocapture readonly, ...)
-declare i32 @puts(i8* nocapture readonly)
+declare i32 @puts(ptr nocapture readonly)
ret void
}
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) {
entry:
call void @foo()
call void @"\01l_bar"()
ret i32 0
}
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) {
entry:
%0 = call i32() @foo()
ret i32 %0
; for the test to pass.
@HasError = global i8 1, align 1
-@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @resetHasError, i8* null }]
+@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @resetHasError, ptr null }]
define void @resetHasError() {
entry:
- store i8 0, i8* @HasError, align 1
+ store i8 0, ptr @HasError, align 1
ret void
}
-define i32 @main(i32 %argc, i8** %argv) #2 {
+define i32 @main(i32 %argc, ptr %argv) #2 {
entry:
- %0 = load i8, i8* @HasError, align 1
+ %0 = load i8, ptr @HasError, align 1
%tobool = trunc i8 %0 to i1
%conv = zext i1 %tobool to i32
ret i32 %conv
ret i32 0
}
-define i8* @foo() {
+define ptr @foo() {
entry:
- ret i8* bitcast (i32 ()* @baz to i8*)
+ ret ptr @baz
}
-declare i8* @bar()
+declare ptr @bar()
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
- %call = tail call i8* @foo()
- %call1 = tail call i8* @bar()
- %cmp = icmp ne i8* %call, %call1
+ %call = tail call ptr @foo()
+ %call1 = tail call ptr @bar()
+ %cmp = icmp ne ptr %call, %call1
%conv = zext i1 %cmp to i32
ret i32 %conv
}
declare void @foo()
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
call void @foo()
- %0 = load i32, i32* @X
+ %0 = load i32, ptr @X
ret i32 %0
}
@F = global i8 0
-@G = global i8* @F
+@G = global ptr @F
@o = common global i32 0, align 4
define i32 @main() {
- %patatino = load i32, i32* @o, align 4
+ %patatino = load i32, ptr @o, align 4
ret i32 %patatino
}
@msg_double = internal global [4 x i8] c"%f\0A\00"
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
define i32 @main() {
%fma = tail call double @llvm.fma.f64(double 3.0, double 3.0, double 3.0) nounwind readnone
- %ptr1 = getelementptr [4 x i8], [4 x i8]* @msg_double, i32 0, i32 0
- call i32 (i8*,...) @printf(i8* %ptr1, double %fma)
+ call i32 (ptr,...) @printf(ptr @msg_double, double %fma)
ret i32 0
}
@flt = internal global float 12.0e+0
@str = internal constant [18 x i8] c"Double value: %f\0A\00"
-declare i32 @printf(i8* nocapture, ...) nounwind
-declare i32 @fflush(i8*) nounwind
+declare i32 @printf(ptr nocapture, ...) nounwind
+declare i32 @fflush(ptr) nounwind
define i32 @main() {
- %flt = load float, float* @flt
+ %flt = load float, ptr @flt
%float2 = frem float %flt, 5.0
%double1 = fpext float %float2 to double
- call i32 (i8*, ...) @printf(i8* getelementptr ([18 x i8], [18 x i8]* @str, i32 0, i64 0), double %double1)
- call i32 @fflush(i8* null)
+ call i32 (ptr, ...) @printf(ptr @str, double %double1)
+ call i32 @fflush(ptr null)
ret i32 0
}
@msg_double = internal global [20 x i8] c"double test passed\0A\00"
@msg_float = internal global [19 x i8] c"float test passed\0A\00"
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
define i32 @main() {
%a = alloca <4 x i32>, align 16
%pfloat_3 = alloca float
; store constants 1,2,3,4 as vector
- store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, <4 x i32>* %a, align 16
+ store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %a, align 16
; store constants 1,2,3,4 as scalars
- store i32 1, i32* %pint_0
- store i32 2, i32* %pint_1
- store i32 3, i32* %pint_2
- store i32 4, i32* %pint_3
+ store i32 1, ptr %pint_0
+ store i32 2, ptr %pint_1
+ store i32 3, ptr %pint_2
+ store i32 4, ptr %pint_3
; load stored scalars
- %val_int0 = load i32, i32* %pint_0
- %val_int1 = load i32, i32* %pint_1
- %val_int2 = load i32, i32* %pint_2
- %val_int3 = load i32, i32* %pint_3
+ %val_int0 = load i32, ptr %pint_0
+ %val_int1 = load i32, ptr %pint_1
+ %val_int2 = load i32, ptr %pint_2
+ %val_int3 = load i32, ptr %pint_3
; load stored vector
- %val0 = load <4 x i32> , <4 x i32> *%a, align 16
+ %val0 = load <4 x i32> , ptr %a, align 16
; extract integers from the loaded vector
%res_i32_0 = extractelement <4 x i32> %val0, i32 0
; if TRUE print message
br i1 %res_i, label %Print_int, label %Double
Print_int:
- %ptr0 = getelementptr [17 x i8], [17 x i8]* @msg_int, i32 0, i32 0
- call i32 (i8*,...) @printf(i8* %ptr0)
+ call i32 (ptr,...) @printf(ptr @msg_int)
br label %Double
Double:
- store <4 x double> <double 5.0, double 6.0, double 7.0, double 8.0>, <4 x double>* %b, align 16
+ store <4 x double> <double 5.0, double 6.0, double 7.0, double 8.0>, ptr %b, align 16
; store constants as scalars
- store double 5.0, double* %pdouble_0
- store double 6.0, double* %pdouble_1
- store double 7.0, double* %pdouble_2
- store double 8.0, double* %pdouble_3
+ store double 5.0, ptr %pdouble_0
+ store double 6.0, ptr %pdouble_1
+ store double 7.0, ptr %pdouble_2
+ store double 8.0, ptr %pdouble_3
; load stored vector
- %val1 = load <4 x double> , <4 x double> *%b, align 16
+ %val1 = load <4 x double> , ptr %b, align 16
; load stored scalars
- %val_double0 = load double, double* %pdouble_0
- %val_double1 = load double, double* %pdouble_1
- %val_double2 = load double, double* %pdouble_2
- %val_double3 = load double, double* %pdouble_3
+ %val_double0 = load double, ptr %pdouble_0
+ %val_double1 = load double, ptr %pdouble_1
+ %val_double2 = load double, ptr %pdouble_2
+ %val_double3 = load double, ptr %pdouble_3
%res_double_0 = extractelement <4 x double> %val1, i32 0
%res_double_1 = extractelement <4 x double> %val1, i32 1
br i1 %res_double, label %Print_double, label %Float
Print_double:
- %ptr1 = getelementptr [20 x i8], [20 x i8]* @msg_double, i32 0, i32 0
- call i32 (i8*,...) @printf(i8* %ptr1)
+ call i32 (ptr,...) @printf(ptr @msg_double)
br label %Float
Float:
- store <4 x float> <float 9.0, float 10.0, float 11.0, float 12.0>, <4 x float>* %c, align 16
+ store <4 x float> <float 9.0, float 10.0, float 11.0, float 12.0>, ptr %c, align 16
- store float 9.0, float* %pfloat_0
- store float 10.0, float* %pfloat_1
- store float 11.0, float* %pfloat_2
- store float 12.0, float* %pfloat_3
+ store float 9.0, ptr %pfloat_0
+ store float 10.0, ptr %pfloat_1
+ store float 11.0, ptr %pfloat_2
+ store float 12.0, ptr %pfloat_3
; load stored vector
- %val2 = load <4 x float> , <4 x float> *%c, align 16
+ %val2 = load <4 x float> , ptr %c, align 16
; load stored scalars
- %val_float0 = load float, float* %pfloat_0
- %val_float1 = load float, float* %pfloat_1
- %val_float2 = load float, float* %pfloat_2
- %val_float3 = load float, float* %pfloat_3
+ %val_float0 = load float, ptr %pfloat_0
+ %val_float1 = load float, ptr %pfloat_1
+ %val_float2 = load float, ptr %pfloat_2
+ %val_float3 = load float, ptr %pfloat_3
%res_float_0 = extractelement <4 x float> %val2, i32 0
%res_float_1 = extractelement <4 x float> %val2, i32 1
br i1 %res_float, label %Print_float, label %Exit
Print_float:
- %ptr2 = getelementptr [19 x i8], [19 x i8]* @msg_float, i32 0, i32 0
- call i32 (i8*,...) @printf(i8* %ptr2)
+ call i32 (ptr,...) @printf(ptr @msg_float)
br label %Exit
Exit: