1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -I%S -emit-llvm -o - %s | FileCheck %s
2c1eb14a66fdd955aff3f957a5843295f27952bddAnders Carlsson
32bd6250f8e14750033362664ee298c2cc0e64853Anders Carlsson#include <typeinfo>
42bd6250f8e14750033362664ee298c2cc0e64853Anders Carlsson
52bd6250f8e14750033362664ee298c2cc0e64853Anders Carlsson// CHECK: @_ZTIDn = external constant i8*
6c1eb14a66fdd955aff3f957a5843295f27952bddAnders Carlssonint* a = nullptr;
7c1eb14a66fdd955aff3f957a5843295f27952bddAnders Carlsson
8c1eb14a66fdd955aff3f957a5843295f27952bddAnders Carlssonvoid f() {
9c1eb14a66fdd955aff3f957a5843295f27952bddAnders Carlsson  int* a = nullptr;
10c1eb14a66fdd955aff3f957a5843295f27952bddAnders Carlsson}
114ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregor
124ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregortypedef decltype(nullptr) nullptr_t;
134ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregor
144ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregornullptr_t get_nullptr();
154ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregor
164ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregorstruct X { };
174ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregorvoid g() {
184ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregor  // CHECK: call i8* @_Z11get_nullptrv()
194ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregor  int (X::*pmf)(int) = get_nullptr();
204ce46c2db2b17ef52b34dbeeec01e448025c8edcDouglas Gregor}
212bd6250f8e14750033362664ee298c2cc0e64853Anders Carlsson
222bd6250f8e14750033362664ee298c2cc0e64853Anders Carlssonconst std::type_info& f2() {
232bd6250f8e14750033362664ee298c2cc0e64853Anders Carlsson  return typeid(nullptr_t);
24124b3def9ed99dc844225aeb6b17f789307500eeChris Lattner}
25