annotate clang/test/PCH/crash-12631281.cpp @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 2e18cbf3894f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -std=c++11 %s -emit-pch -o %t.pch
anatofuz
parents:
diff changeset
2 // RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -include-pch %t.pch -verify
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
3
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
4 // RUN: %clang_cc1 -std=c++11 %s -emit-pch -fpch-instantiate-templates -o %t.pch
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
5 // RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -include-pch %t.pch -verify
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
6
150
anatofuz
parents:
diff changeset
7 // expected-no-diagnostics
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 // rdar://12631281
anatofuz
parents:
diff changeset
10 // This reduced test case exposed a use-after-free memory bug, which was reliable
anatofuz
parents:
diff changeset
11 // reproduced only on guarded malloc (and probably valgrind).
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 #ifndef HEADER
anatofuz
parents:
diff changeset
14 #define HEADER
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 template < class _T2> struct is_convertible;
anatofuz
parents:
diff changeset
17 template <> struct is_convertible<int> { typedef int type; };
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 template <class _T1, class _T2> struct pair {
anatofuz
parents:
diff changeset
20 typedef _T1 first_type;
anatofuz
parents:
diff changeset
21 typedef _T2 second_type;
anatofuz
parents:
diff changeset
22 template <class _U1, class _U2, class = typename is_convertible< first_type>::type>
anatofuz
parents:
diff changeset
23 pair(_U1&& , _U2&& ); // expected-note {{candidate}}
anatofuz
parents:
diff changeset
24 };
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 template <class _ForwardIterator>
anatofuz
parents:
diff changeset
27 pair<_ForwardIterator, _ForwardIterator> __equal_range(_ForwardIterator) {
anatofuz
parents:
diff changeset
28 return pair<_ForwardIterator, _ForwardIterator>(0, 0); // expected-error {{no matching constructor}}
anatofuz
parents:
diff changeset
29 }
anatofuz
parents:
diff changeset
30
anatofuz
parents:
diff changeset
31 template <class _ForwardIterator>
anatofuz
parents:
diff changeset
32 pair<_ForwardIterator, _ForwardIterator> equal_range( _ForwardIterator a) {
anatofuz
parents:
diff changeset
33 return __equal_range(a); // expected-note {{instantiation}}
anatofuz
parents:
diff changeset
34 }
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 class A {
anatofuz
parents:
diff changeset
37 pair<int, int> range() {
anatofuz
parents:
diff changeset
38 return equal_range(0); // expected-note {{instantiation}}
anatofuz
parents:
diff changeset
39 }
anatofuz
parents:
diff changeset
40 };
anatofuz
parents:
diff changeset
41
anatofuz
parents:
diff changeset
42 #else
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 #endif