1*afa4681cSAbid Qadeer! RUN: %flang_fc1 -emit-llvm -debug-info-kind=standalone %s -o - | FileCheck %s 2*afa4681cSAbid Qadeer 3*afa4681cSAbid Qadeersubroutine f1 4*afa4681cSAbid Qadeer real(kind=4) :: x, y, xa, ya 5*afa4681cSAbid Qadeer common // x, y 6*afa4681cSAbid Qadeer common /a/ xa, ya 7*afa4681cSAbid Qadeer x = 1.1 8*afa4681cSAbid Qadeer y = 2.2 9*afa4681cSAbid Qadeer xa = 3.3 10*afa4681cSAbid Qadeer ya = 4.4 11*afa4681cSAbid Qadeer print *, x, y, xa, ya 12*afa4681cSAbid Qadeerend subroutine 13*afa4681cSAbid Qadeer! CHECK-DAG: ![[XF1:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "x", linkageName: "_QFf1Ex", scope: ![[CBF1:[0-9]+]], file: !5, line: [[@LINE-9]], type: ![[REAL:[0-9]+]]{{.*}}) 14*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPXF1:[0-9]+]] = !DIGlobalVariableExpression(var: ![[XF1]], expr: !DIExpression()) 15*afa4681cSAbid Qadeer! CHECK-DAG: ![[YF1:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "y", linkageName: "_QFf1Ey", scope: ![[CBF1]], file: !{{[0-9]+}}, line: [[@LINE-11]], type: ![[REAL]]{{.*}}) 16*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPYF1:[0-9]+]] = !DIGlobalVariableExpression(var: ![[YF1]], expr: !DIExpression(DW_OP_plus_uconst, 4)) 17*afa4681cSAbid Qadeer! CHECK-DAG: ![[XAF1:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "xa", linkageName: "_QFf1Exa", scope: ![[CBAF1:[0-9]+]], file: !{{[0-9]+}}, line: [[@LINE-13]], type: ![[REAL]]{{.*}}) 18*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPXAF1:[0-9]+]] = !DIGlobalVariableExpression(var: ![[XAF1]], expr: !DIExpression()) 19*afa4681cSAbid Qadeer! CHECK-DAG: ![[YAF1:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "ya", linkageName: "_QFf1Eya", scope: ![[CBAF1]], file: !{{[0-9]+}}, line: [[@LINE-15]], type: ![[REAL]]{{.*}}) 20*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPYAF1:[0-9]+]] = !DIGlobalVariableExpression(var: ![[YAF1]], expr: !DIExpression(DW_OP_plus_uconst, 4)) 21*afa4681cSAbid Qadeer 22*afa4681cSAbid Qadeer 23*afa4681cSAbid Qadeersubroutine f2 24*afa4681cSAbid Qadeer real(kind=4) :: x, y, z, xa, ya, za 25*afa4681cSAbid Qadeer common // x, y, z 26*afa4681cSAbid Qadeer common /a/ xa, ya, za 27*afa4681cSAbid Qadeer print *, x, y, z, xa, ya, za 28*afa4681cSAbid Qadeerend subroutine 29*afa4681cSAbid Qadeer! CHECK-DAG: ![[XF2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "x", linkageName: "_QFf2Ex", scope: ![[CBF2:[0-9]+]], file: !{{[0-9]+}}, line: [[@LINE-5]], type: ![[REAL]]{{.*}}) 30*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPXF2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[XF2]], expr: !DIExpression()) 31*afa4681cSAbid Qadeer! CHECK-DAG: ![[YF2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "y", linkageName: "_QFf2Ey", scope: ![[CBF2]], file: !{{[0-9]+}}, line: [[@LINE-7]], type: ![[REAL]]{{.*}}) 32*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPYF2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[YF2]], expr: !DIExpression(DW_OP_plus_uconst, 4)) 33*afa4681cSAbid Qadeer! CHECK-DAG: ![[ZF2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "z", linkageName: "_QFf2Ez", scope: ![[CBF2]], file: !{{[0-9]+}}, line: [[@LINE-9]], type: ![[REAL]]{{.*}}) 34*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPZF2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[ZF2]], expr: !DIExpression(DW_OP_plus_uconst, 8)) 35*afa4681cSAbid Qadeer! CHECK-DAG: ![[XAF2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "xa", linkageName: "_QFf2Exa", scope: ![[CBAF2:[0-9]+]], file: !{{[0-9]+}}, line: [[@LINE-11]], type: ![[REAL]]{{.*}}) 36*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPXAF2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[XAF2]], expr: !DIExpression()) 37*afa4681cSAbid Qadeer! CHECK-DAG: ![[YAF2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "ya", linkageName: "_QFf2Eya", scope: ![[CBAF2]], file: !{{[0-9]+}}, line: [[@LINE-13]], type: ![[REAL]]{{.*}}) 38*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPYAF2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[YAF2]], expr: !DIExpression(DW_OP_plus_uconst, 4)) 39*afa4681cSAbid Qadeer! CHECK-DAG: ![[ZAF2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "za", linkageName: "_QFf2Eza", scope: ![[CBAF2]], file: !{{[0-9]+}}, line: [[@LINE-15]], type: ![[REAL]]{{.*}}) 40*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPZAF2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[ZAF2]], expr: !DIExpression(DW_OP_plus_uconst, 8)) 41*afa4681cSAbid Qadeer 42*afa4681cSAbid Qadeersubroutine f3 43*afa4681cSAbid Qadeer integer(kind=4) :: x = 42, xa = 42 44*afa4681cSAbid Qadeer common // x 45*afa4681cSAbid Qadeer common /a/ xa 46*afa4681cSAbid Qadeer print *, x 47*afa4681cSAbid Qadeer print *, xa 48*afa4681cSAbid Qadeerend subroutine 49*afa4681cSAbid Qadeer! CHECK-DAG: ![[XF3:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "x", linkageName: "_QFf3Ex", scope: ![[CBF3:[0-9]+]], file: !{{[0-9]+}}, line: [[@LINE-6]], type: ![[INT:[0-9]+]]{{.*}}) 50*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPXF3:[0-9]+]] = !DIGlobalVariableExpression(var: ![[XF3]], expr: !DIExpression()) 51*afa4681cSAbid Qadeer! CHECK-DAG: ![[XAF3:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "xa", linkageName: "_QFf3Exa", scope: ![[CBAF3:[0-9]+]], file: !{{[0-9]+}}, line: [[@LINE-8]], type: ![[INT]]{{.*}}) 52*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPXAF3:[0-9]+]] = !DIGlobalVariableExpression(var: ![[XAF3]], expr: !DIExpression()) 53*afa4681cSAbid Qadeer 54*afa4681cSAbid Qadeerprogram test 55*afa4681cSAbid Qadeer real(kind=4) :: v1, v2, v3, va1, va2, va3 56*afa4681cSAbid Qadeer common // v1, v2, v3 57*afa4681cSAbid Qadeer common /a/ va1, va2, va3 58*afa4681cSAbid Qadeer call f1() 59*afa4681cSAbid Qadeer call f2() 60*afa4681cSAbid Qadeer call f3() 61*afa4681cSAbid Qadeer print *, v1, va1, va3 62*afa4681cSAbid QadeerEND 63*afa4681cSAbid Qadeer! CHECK-DAG: ![[V1:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "v1", linkageName: "_QFEv1", scope: ![[CBM:[0-9]+]], file: !{{[0-9]+}}, line: [[@LINE-8]], type: ![[REAL]]{{.*}}) 64*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPV1:[0-9]+]] = !DIGlobalVariableExpression(var: ![[V1]], expr: !DIExpression()) 65*afa4681cSAbid Qadeer! CHECK-DAG: ![[V2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "v2", linkageName: "_QFEv2", scope: ![[CBM]], file: !{{[0-9]+}}, line: [[@LINE-10]], type: ![[REAL]]{{.*}}) 66*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPV2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[V2]], expr: !DIExpression(DW_OP_plus_uconst, 4)) 67*afa4681cSAbid Qadeer! CHECK-DAG: ![[V3:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "v3", linkageName: "_QFEv3", scope: ![[CBM]], file: !{{[0-9]+}}, line: [[@LINE-12]], type: ![[REAL]]{{.*}}) 68*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPV3:[0-9]+]] = !DIGlobalVariableExpression(var: ![[V3]], expr: !DIExpression(DW_OP_plus_uconst, 8)) 69*afa4681cSAbid Qadeer! CHECK-DAG: ![[VA1:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "va1", linkageName: "_QFEva1", scope: ![[CBAM:[0-9]+]], file: !{{[0-9]+}}, line: [[@LINE-14]], type: ![[REAL]]{{.*}}) 70*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPVA1:[0-9]+]] = !DIGlobalVariableExpression(var: ![[VA1]], expr: !DIExpression()) 71*afa4681cSAbid Qadeer! CHECK-DAG: ![[VA2:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "va2", linkageName: "_QFEva2", scope: ![[CBAM]], file: !{{[0-9]+}}, line: [[@LINE-16]], type: ![[REAL]]{{.*}}) 72*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPVA2:[0-9]+]] = !DIGlobalVariableExpression(var: ![[VA2]], expr: !DIExpression(DW_OP_plus_uconst, 4)) 73*afa4681cSAbid Qadeer! CHECK-DAG: ![[VA3:[0-9]+]] = {{.*}}!DIGlobalVariable(name: "va3", linkageName: "_QFEva3", scope: ![[CBAM]], file: !{{[0-9]+}}, line: [[@LINE-18]], type: ![[REAL]]{{.*}}) 74*afa4681cSAbid Qadeer! CHECK-DAG: ![[EXPVA3:[0-9]+]] = !DIGlobalVariableExpression(var: ![[VA3]], expr: !DIExpression(DW_OP_plus_uconst, 8)) 75*afa4681cSAbid Qadeer 76*afa4681cSAbid Qadeer 77*afa4681cSAbid Qadeer! CHECK-DAG: ![[REAL]] = !DIBasicType(name: "real", size: 32, encoding: DW_ATE_float) 78*afa4681cSAbid Qadeer! CHECK-DAG: ![[INT]] = !DIBasicType(name: "integer", size: 32, encoding: DW_ATE_signed) 79*afa4681cSAbid Qadeer 80*afa4681cSAbid Qadeer! CHECK-DAG: ![[F1:[0-9]+]] = {{.*}}!DISubprogram(name: "f1"{{.*}}) 81*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBF1]] = !DICommonBlock(scope: ![[F1]], declaration: null, name: "__BLNK__"{{.*}}) 82*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBAF1]] = !DICommonBlock(scope: ![[F1]], declaration: null, name: "a"{{.*}}) 83*afa4681cSAbid Qadeer 84*afa4681cSAbid Qadeer! CHECK-DAG: ![[F2:[0-9]+]] = {{.*}}!DISubprogram(name: "f2"{{.*}}) 85*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBF2]] = !DICommonBlock(scope: ![[F2]], declaration: null, name: "__BLNK__"{{.*}}) 86*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBAF2]] = !DICommonBlock(scope: ![[F2]], declaration: null, name: "a"{{.*}}) 87*afa4681cSAbid Qadeer 88*afa4681cSAbid Qadeer! CHECK-DAG: ![[F3:[0-9]+]] = {{.*}}!DISubprogram(name: "f3"{{.*}}) 89*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBF3]] = !DICommonBlock(scope: ![[F3]], declaration: null, name: "__BLNK__"{{.*}}) 90*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBAF3]] = !DICommonBlock(scope: ![[F3]], declaration: null, name: "a"{{.*}}) 91*afa4681cSAbid Qadeer 92*afa4681cSAbid Qadeer! CHECK-DAG: ![[MAIN:[0-9]+]] = {{.*}}!DISubprogram(name: "test"{{.*}}) 93*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBM]] = !DICommonBlock(scope: ![[MAIN]], declaration: null, name: "__BLNK__"{{.*}}) 94*afa4681cSAbid Qadeer! CHECK-DAG: ![[CBAM]] = !DICommonBlock(scope: ![[MAIN]], declaration: null, name: "a"{{.*}}) 95*afa4681cSAbid Qadeer 96*afa4681cSAbid Qadeer! Using CHECK-DAG-SAME so that we are not dependent on order of variable in these lists. 97*afa4681cSAbid Qadeer! CHECK-DAG: @__BLNK__ = global{{.*}} 98*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPXF1]] 99*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPYF1]] 100*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPXF2]] 101*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPYF2]] 102*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPZF2]] 103*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPXF3]] 104*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPV1]] 105*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPV2]] 106*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPV3]] 107*afa4681cSAbid Qadeer 108*afa4681cSAbid Qadeer! CHECK-DAG: @a_ = global{{.*}} 109*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPXAF1]] 110*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPYAF1]] 111*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPXAF2]] 112*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPYAF2]] 113*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPZAF2]] 114*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPXAF3]] 115*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPVA1]] 116*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPVA2]] 117*afa4681cSAbid Qadeer! CHECK-DAG-SAME: !dbg ![[EXPVA3]] 118*afa4681cSAbid Qadeer 119*afa4681cSAbid Qadeer! CHECK-DAG: !DICompileUnit({{.*}}, globals: ![[GLOBALS:[0-9]+]]) 120*afa4681cSAbid Qadeer! CHECK-DAG: ![[GLOBALS]] 121*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPXF1]] 122*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPYF1]] 123*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPXAF1]] 124*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPYAF1]] 125*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPXF2]] 126*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPYF2]] 127*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPZF2]] 128*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPXAF2]] 129*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPYAF2]] 130*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPZAF2]] 131*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPXF3]] 132*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPXAF3]] 133*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPV1]] 134*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPV2]] 135*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPV3]] 136*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPVA1]] 137*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPVA2]] 138*afa4681cSAbid Qadeer! CHECK-DAG-SAME: ![[EXPVA3]] 139