14967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -w -debug-info-kind=line-tables-only -std=c++11 -fexceptions -fcxx-exceptions -S -emit-llvm %s -o - -triple %itanium_abi_triple | FileCheck %s
287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -w -debug-info-kind=line-tables-only -std=c++11 -fexceptions -fcxx-exceptions -S -emit-llvm %s -o - -triple i686-linux-gnu | FileCheck %s
30e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
40e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesint &src();
50e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesint *sink();
60e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesextern "C" __complex float complex_src();
70e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesextern "C" __complex float *complex_sink();
80e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
90e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
100e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f1() {
110e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  *sink()
120e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  // CHECK: store {{.*}}, !dbg [[DBG_F1:!.*]]
130e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 100
140e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      = //
150e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      src();
160e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
170e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
180e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct foo {
190e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int i;
200e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int &j;
210e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  __complex float k;
220e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  foo();
230e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
240e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
250e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
260e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesfoo::foo()
270e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    :
280e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 200
290e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      i // CHECK: store i32 {{.*}} !dbg [[DBG_FOO_VALUE:!.*]]
300e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      (src()),
310e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      j // CHECK: store i32* {{.*}} !dbg [[DBG_FOO_REF:!.*]]
320e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      (src()),
330e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      k // CHECK: store float {{.*}} !dbg [[DBG_FOO_COMPLEX:!.*]]
340e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      (complex_src()) {
350e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
360e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
370e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define {{.*}}f2{{.*}}
380e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f2() {
390e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  // CHECK: store float {{.*}} !dbg [[DBG_F2:!.*]]
400e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  *complex_sink()
410e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 300
420e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      = //
430e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      complex_src();
440e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
450e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
460e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
470e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f3() {
480e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  // CHECK: store float {{.*}} !dbg [[DBG_F3:!.*]]
490e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  *complex_sink()
500e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 400
510e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      += //
520e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      complex_src();
530e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
540e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
550e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
560e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f4() {
570e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 500
580e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  auto x // CHECK: store {{.*}} !dbg [[DBG_F4:!.*]]
590e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      = src();
600e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
610e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
620e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
630e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f5() {
640e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 600
650e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  auto x // CHECK: store float {{.*}} !dbg [[DBG_F5:!.*]]
660e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      = complex_src();
670e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
680e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
690e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct agg { int i; };
700e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesagg agg_src();
710e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
720e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
730e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f6() {
740e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  agg x;
750e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  // CHECK: call void @llvm.memcpy{{.*}} !dbg [[DBG_F6:!.*]]
760e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  x
770e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 700
780e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      = //
790e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      agg_src();
800e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
810e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
820e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
830e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f7() {
840e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int *src1();
850e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int src2();
860e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 800
870e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int x = ( // CHECK: load {{.*}} !dbg [[DBG_F7:!.*]]
880e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      src1())[src2()];
890e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
900e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
910e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
920e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f8() {
930e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int src1[1];
940e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int src2();
950e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 900
960e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int x = ( // CHECK: load {{.*}} !dbg [[DBG_F8:!.*]]
970e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      src1)[src2()];
980e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
990e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1000e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1010e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f9(int i) {
1020e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int src1[1][i];
1030e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int src2();
1040e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1000
1050e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  auto x = ( // CHECK: getelementptr {{.*}} !dbg [[DBG_F9:!.*]]
1060e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      src1)[src2()];
1070e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1080e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1090e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesinline void *operator new(decltype(sizeof(1)), void *p) noexcept { return p; }
1100e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1110e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1120e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f10() {
1130e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  void *void_src();
1140e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (
1150e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    // CHECK: store {{.*}} !dbg [[DBG_F10_STORE:!.*]]
1160e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1100
1170e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      new (void_src()) int(src()));
1180e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1190e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1200e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// noexcept just to simplify the codegen a bit
1210e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid fn() noexcept(true);
1220e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1230e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct bar {
1240e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  bar();
1250e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  // noexcept(false) to convolute the global dtor
1260e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  ~bar() noexcept(false);
1270e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
1280e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// global ctor cleanup
1290e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1300e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: invoke{{ }}
1310e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: invoke{{ }}
1320e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK:   to label {{.*}}, !dbg [[DBG_GLBL_CTOR_B:!.*]]
1330e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1340e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// terminate caller
1350e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1360e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1370e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// global dtor cleanup
1380e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1390e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: invoke{{ }}
1400e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: invoke{{ }}
1410e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK:   to label {{.*}}, !dbg [[DBG_GLBL_DTOR_B:!.*]]
1420e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1200
1430e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesbar b[1] = { //
1440e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    (fn(),   //
1450e2c34f92f00628d48968dfea096d36381f494cbStephen Hines     bar())};
1460e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1470e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1480e2c34f92f00628d48968dfea096d36381f494cbStephen Hines__complex double f11() {
1490e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  __complex double f;
1500e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: store {{.*}} !dbg [[DBG_F11:!.*]]
1510e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1300
1520e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return f;
1530e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1540e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1550e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1560e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f12() {
1570e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  int f12_1();
1580e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  void f12_2(int = f12_1());
15987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: call {{.*}}{{(signext )?}}i32 {{.*}} !dbg [[DBG_F12:!.*]]
1600e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1400
1610e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  f12_2();
1620e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1630e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1640e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1650e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f13() {
1660e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: call {{.*}} !dbg [[DBG_F13:!.*]]
1670e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define F13_IMPL 1, src()
1680e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  1,
1690e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1500
1700e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  F13_IMPL;
1710e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1720e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1730e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f14_impl {
1740e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  f14_impl(int);
1750e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
1760e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1770e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1780e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f14_use {
1790e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: call {{.*}}f14_impl{{.*}}, !dbg [[DBG_F14_CTOR_CALL:![0-9]*]]
1800e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1600
1810e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  f14_impl v{//
1820e2c34f92f00628d48968dfea096d36381f494cbStephen Hines             1};
1830e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  f14_use();
1840e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
1850e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1860e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesf14_use::f14_use() = default;
1870e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1880e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1890e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1900e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid func(foo);
1910e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f15(foo *f) {
1920e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  func(
1930e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: getelementptr {{.*}}, !dbg [[DBG_F15:![0-9]*]]
1940e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1700
1950e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      f[3]);
1960e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1970e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1980e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
1990e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f16(__complex float f) {
2000e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  __complex float g = //
2010e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: add {{.*}}, !dbg [[DBG_F16:![0-9]*]]
2020e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1800
2030e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      f + 1;
2040e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2050e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2060e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2070e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f17(int *x) {
2080e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  1,
2090e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: getelementptr {{.*}}, !dbg [[DBG_F17:![0-9]*]]
2100e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 1900
2110e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      x[1];
2120e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2130e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2140e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2150e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f18(int a, int b) {
2160e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: icmp {{.*}}, !dbg [[DBG_F18_1:![0-9]*]]
2170e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: br {{.*}}, !dbg [[DBG_F18_2:![0-9]*]]
2180e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 2000
2190e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  if (a  //
2200e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      && //
2210e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      b)
2220e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    ;
2230e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2240e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2250e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2260e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f19(int a, int b) {
2270e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: icmp {{.*}}, !dbg [[DBG_F19_1:![0-9]*]]
2280e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: br {{.*}}, !dbg [[DBG_F19_2:![0-9]*]]
2290e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 2100
2300e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  if (a  //
2310e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      || //
2320e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      b)
2330e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    ;
2340e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2350e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2360e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2370e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f20(int a, int b, int c) {
2380e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: icmp {{.*}}, !dbg [[DBG_F20_1:![0-9]*]]
2390e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// FIXME: Conditional operator's exprloc should be the '?' not the start of the
2400e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// expression, then this would go in the right place. (but adding getExprLoc to
2410e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// the ConditionalOperator breaks the ARC migration tool - need to investigate
2420e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// further).
2430e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: br {{.*}}, !dbg [[DBG_F20_1]]
2440e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 2200
2450e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  if (a  //
2460e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      ? //
2470e2c34f92f00628d48968dfea096d36381f494cbStephen Hines      b : c)
2480e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    ;
2490e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2500e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2510e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2520e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesint f21_a(int = 0);
2530e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f21_b(int = f21_a());
2540e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f21() {
2550e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: call {{.*}}f21_b{{.*}}, !dbg [[DBG_F21:![0-9]*]]
2560e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 2300
2570e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  f21_b();
2580e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2590e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2600e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2610e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f22_dtor {
2620e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  ~f22_dtor();
2630e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
2640e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f22() {
2650e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  {
2660e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    f22_dtor f;
2670e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    src();
2680e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: invoke {{.*}}src
2690e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: call {{.*}}, !dbg [[DBG_F22:![0-9]*]]
2700e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: call {{.*}}, !dbg [[DBG_F22]]
2710e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 2400
2720e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  }
2730e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2740e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2750e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2760e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f23_struct {
2770e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
2780e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesf23_struct f23_a();
2790e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f23_b(f23_struct = f23_a());
2800e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f23() {
2810e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: call {{.*}}f23_a{{.*}}, !dbg [[DBG_F23:![0-9]*]]
2820e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 2500
2830e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  f23_b();
2840e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2850e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2860e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK-LABEL: define
2870e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f24_a(__complex float = complex_src());
2880e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid f24() {
2890e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: call {{.*}}complex_src{{.*}}, !dbg [[DBG_F24:![0-9]*]]
2900e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#line 2600
2910e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  f24_a();
2920e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2930e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
294b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F1]] = !DILocation(line: 100,
295b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_FOO_VALUE]] = !DILocation(line: 200,
296b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_FOO_REF]] = !DILocation(line: 202,
297b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_FOO_COMPLEX]] = !DILocation(line: 204,
298b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F2]] = !DILocation(line: 300,
299b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F3]] = !DILocation(line: 400,
300b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F4]] = !DILocation(line: 500,
301b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F5]] = !DILocation(line: 600,
302b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F6]] = !DILocation(line: 700,
303b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F7]] = !DILocation(line: 800,
304b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F8]] = !DILocation(line: 900,
305b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F9]] = !DILocation(line: 1000,
306b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F10_STORE]] = !DILocation(line: 1100,
307b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_GLBL_CTOR_B]] = !DILocation(line: 1200,
308b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_GLBL_DTOR_B]] = !DILocation(line: 1200,
309b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F11]] = !DILocation(line: 1300,
310b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F12]] = !DILocation(line: 1400,
311b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F13]] = !DILocation(line: 1500,
312b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F14_CTOR_CALL]] = !DILocation(line: 1600,
313b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F15]] = !DILocation(line: 1700,
314b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F16]] = !DILocation(line: 1800,
315b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F17]] = !DILocation(line: 1900,
316b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F18_1]] = !DILocation(line: 2000,
317b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F18_2]] = !DILocation(line: 2001,
318b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F19_1]] = !DILocation(line: 2100,
319b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F19_2]] = !DILocation(line: 2101,
320b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F20_1]] = !DILocation(line: 2200,
321b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F23]] = !DILocation(line: 2500,
322b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: [[DBG_F24]] = !DILocation(line: 2600,
323