Home | History | Annotate | Download | only in Inputs
      1 @globalvar = global i32 1, align 4
      2 @staticvar = internal global i32 1, align 4
      3 @staticconstvar = internal unnamed_addr constant [2 x i32] [i32 10, i32 20], align 4
      4 @commonvar = common global i32 0, align 4
      5 @P = internal global void ()* null, align 8
      6 
      7 @weakalias = weak alias void (...), bitcast (void ()* @globalfunc1 to void (...)*)
      8 @analias = alias void (...), bitcast (void ()* @globalfunc2 to void (...)*)
      9 @linkoncealias = alias void (...), bitcast (void ()* @linkoncefunc to void (...)*)
     10 
     11 define void @globalfunc1() #0 {
     12 entry:
     13   ret void
     14 }
     15 
     16 define void @globalfunc2() #0 {
     17 entry:
     18   ret void
     19 }
     20 
     21 define linkonce_odr void @linkoncefunc() #0 {
     22 entry:
     23   ret void
     24 }
     25 
     26 define i32 @referencestatics(i32 %i) #0 {
     27 entry:
     28   %i.addr = alloca i32, align 4
     29   store i32 %i, i32* %i.addr, align 4
     30   %call = call i32 @staticfunc()
     31   %0 = load i32, i32* @staticvar, align 4
     32   %add = add nsw i32 %call, %0
     33   %1 = load i32, i32* %i.addr, align 4
     34   %idxprom = sext i32 %1 to i64
     35   %arrayidx = getelementptr inbounds [2 x i32], [2 x i32]* @staticconstvar, i64 0, i64 %idxprom
     36   %2 = load i32, i32* %arrayidx, align 4
     37   %add1 = add nsw i32 %add, %2
     38   ret i32 %add1
     39 }
     40 
     41 define i32 @referenceglobals(i32 %i) #0 {
     42 entry:
     43   %i.addr = alloca i32, align 4
     44   store i32 %i, i32* %i.addr, align 4
     45   call void @globalfunc1()
     46   %0 = load i32, i32* @globalvar, align 4
     47   ret i32 %0
     48 }
     49 
     50 define i32 @referencecommon(i32 %i) #0 {
     51 entry:
     52   %i.addr = alloca i32, align 4
     53   store i32 %i, i32* %i.addr, align 4
     54   %0 = load i32, i32* @commonvar, align 4
     55   ret i32 %0
     56 }
     57 
     58 define void @setfuncptr() #0 {
     59 entry:
     60   store void ()* @staticfunc2, void ()** @P, align 8
     61   ret void
     62 }
     63 
     64 define void @callfuncptr() #0 {
     65 entry:
     66   %0 = load void ()*, void ()** @P, align 8
     67   call void %0()
     68   ret void
     69 }
     70 
     71 @weakvar = weak global i32 1, align 4
     72 define weak void @weakfunc() #0 {
     73 entry:
     74   ret void
     75 }
     76 
     77 define internal i32 @staticfunc() #0 {
     78 entry:
     79   ret i32 1
     80 }
     81 
     82 define internal void @staticfunc2() #0 {
     83 entry:
     84   ret void
     85 }
     86 
     87 
     88