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