Mercurial > hg > CbC > CbC_llvm
comparison clang/test/CodeGenCXX/nullptr.cpp @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | 1d019706d866 |
children |
comparison
equal
deleted
inserted
replaced
232:70dce7da266c | 236:c4bab56944e8 |
---|---|
1 // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -I%S -emit-llvm -o - %s | FileCheck %s | 1 // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -I%S -emit-llvm -o - %s | FileCheck %s |
2 | 2 |
3 #include <typeinfo> | 3 #include <typeinfo> |
4 | 4 |
5 // CHECK: @_ZTIDn = external constant i8* | 5 // CHECK: @_ZTIDn = external constant ptr |
6 int* a = nullptr; | 6 int* a = nullptr; |
7 | 7 |
8 void f() { | 8 void f() { |
9 int* a = nullptr; | 9 int* a = nullptr; |
10 } | 10 } |
13 | 13 |
14 nullptr_t get_nullptr(); | 14 nullptr_t get_nullptr(); |
15 | 15 |
16 struct X { }; | 16 struct X { }; |
17 void g() { | 17 void g() { |
18 // CHECK: call i8* @_Z11get_nullptrv() | 18 // CHECK: call ptr @_Z11get_nullptrv() |
19 int (X::*pmf)(int) = get_nullptr(); | 19 int (X::*pmf)(int) = get_nullptr(); |
20 } | 20 } |
21 | 21 |
22 const std::type_info& f2() { | 22 const std::type_info& f2() { |
23 return typeid(nullptr_t); | 23 return typeid(nullptr_t); |
36 | 36 |
37 // CHECK-LABEL: define {{.*}}pr23833_b | 37 // CHECK-LABEL: define {{.*}}pr23833_b |
38 // CHECK: store | 38 // CHECK: store |
39 // CHECK: load | 39 // CHECK: load |
40 // CHECK-NOT: load | 40 // CHECK-NOT: load |
41 // CHECK: ret i8* null | 41 // CHECK: ret ptr null |
42 nullptr_t pr23833_b(nullptr_t &n) { return n; } | 42 nullptr_t pr23833_b(nullptr_t &n) { return n; } |
43 | 43 |
44 struct X1 { operator int*(); }; | 44 struct X1 { operator int*(); }; |
45 struct X2 { operator const nullptr_t&(); }; | 45 struct X2 { operator const nullptr_t&(); }; |
46 | 46 |
56 // CHECK-LABEL: define {{.*}}pr23833_d | 56 // CHECK-LABEL: define {{.*}}pr23833_d |
57 // CHECK: call {{.*}}X2 | 57 // CHECK: call {{.*}}X2 |
58 // CHECK-NOT: load | 58 // CHECK-NOT: load |
59 // CHECK: store | 59 // CHECK: store |
60 // CHECK: load | 60 // CHECK: load |
61 // CHECK: ret i32* | 61 // CHECK: ret ptr |
62 int *pr23833_d() { | 62 int *pr23833_d() { |
63 int *p = X2(); | 63 int *p = X2(); |
64 return p; | 64 return p; |
65 } | 65 } |
66 | 66 |