brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 83e248b Raw
92 lines · c
1// RUN: %clang_cc1 %s -Wno-unused-value -verify -fsyntax-only2// RUN: %clang_cc1 %s -Wno-unused-value -ast-dump -DAST_CHECK | FileCheck %s3 4struct S {};5void usage(float f, int i, double d) {6#ifdef AST_CHECK7  __builtin_fpclassify(d, 1, i, i, 3, d);8  //CHECK: CallExpr9  //CHECK-NEXT: ImplicitCastExpr10  //CHECK-SAME: <BuiltinFnToFnPtr>11  //CHECK-NEXT: DeclRefExpr12  //CHECK-SAME: '__builtin_fpclassify'13  //CHECK-NEXT: ImplicitCastExpr14  //CHECK-SAME: 'int' <FloatingToIntegral>15  //CHECK-NEXT: ImplicitCastExpr16  //CHECK-SAME: 'double' <LValueToRValue>17  //CHECK-NEXT: DeclRefExpr18  //CHECK-SAME: 'd' 'double'19  //CHECK-NEXT: IntegerLiteral20  //CHECK-NEXT: ImplicitCastExpr21  //CHECK-SAME: 'int' <LValueToRValue>22  //CHECK-NEXT: DeclRefExpr23  //CHECK-SAME: 'i' 'int'24  //CHECK-NEXT: ImplicitCastExpr25  //CHECK-SAME: 'int' <LValueToRValue>26  //CHECK-NEXT: DeclRefExpr27  //CHECK-SAME: 'i' 'int'28  //CHECK-NEXT: IntegerLiteral29  //CHECK-NEXT: ImplicitCastExpr30  //CHECK-SAME: 'double' <LValueToRValue>31  //CHECK-NEXT: DeclRefExpr32  //CHECK-SAME: 'd' 'double'33 34  __builtin_fpclassify(f, 1, i, i, 3, f);35  //CHECK: CallExpr36  //CHECK-NEXT: ImplicitCastExpr37  //CHECK-SAME: <BuiltinFnToFnPtr>38  //CHECK-NEXT: DeclRefExpr39  //CHECK-SAME: '__builtin_fpclassify'40  //CHECK-NEXT: ImplicitCastExpr41  //CHECK-SAME: 'int' <FloatingToIntegral>42  //CHECK-NEXT: ImplicitCastExpr43  //CHECK-SAME: 'float' <LValueToRValue>44  //CHECK-NEXT: DeclRefExpr45  //CHECK-SAME: 'f' 'float'46  //CHECK-NEXT: IntegerLiteral47  //CHECK-NEXT: ImplicitCastExpr48  //CHECK-SAME: 'int' <LValueToRValue>49  //CHECK-NEXT: DeclRefExpr50  //CHECK-SAME: 'i' 'int'51  //CHECK-NEXT: ImplicitCastExpr52  //CHECK-SAME: 'int' <LValueToRValue>53  //CHECK-NEXT: DeclRefExpr54  //CHECK-SAME: 'i' 'int'55  //CHECK-NEXT: IntegerLiteral56  //CHECK-NEXT: ImplicitCastExpr57  //CHECK-SAME: 'float' <LValueToRValue>58  //CHECK-NEXT: DeclRefExpr59  //CHECK-SAME: 'f' 'float'60 61  __builtin_isfinite(f);62  //CHECK: CallExpr63  //CHECK-NEXT: ImplicitCastExpr64  //CHECK-SAME: <BuiltinFnToFnPtr>65  //CHECK-NEXT: DeclRefExpr66  //CHECK-SAME: '__builtin_isfinite'67  //CHECK-NEXT: ImplicitCastExpr68  //CHECK-SAME: 'float' <LValueToRValue>69  //CHECK-NEXT: DeclRefExpr70  //CHECK-SAME: 'f' 'float'71 72  __builtin_isfinite(d);73  //CHECK: CallExpr74  //CHECK-NEXT: ImplicitCastExpr75  //CHECK-SAME: <BuiltinFnToFnPtr>76  //CHECK-NEXT: DeclRefExpr77  //CHECK-SAME: '__builtin_isfinite'78  //CHECK-NEXT: ImplicitCastExpr79  //CHECK-SAME: 'double' <LValueToRValue>80  //CHECK-NEXT: DeclRefExpr81  //CHECK-SAME: 'd' 'double'82#else83  struct S s;84  // expected-error@+1{{passing 'struct S' to parameter of incompatible type 'int'}}85  __builtin_fpclassify(d, s, i, i, 3, d);86  // expected-error@+1{{floating point classification requires argument of floating point type (passed in 'int')}}87  __builtin_fpclassify(d, 1, i, i, 3, i);88  // expected-error@+1{{floating point classification requires argument of floating point type (passed in 'int')}}89  __builtin_isfinite(i);90#endif91}92