blob: 9fa54f57814ca49f32c49a5bf3ed993c2a3e22c8 [file] [log] [blame]
// { dg-do compile { target c++17 } }
// { dg-additional-options "-Wno-analyzer-too-complex" } */
template <typename> struct iterator_traits;
template <typename _Tp> struct iterator_traits<_Tp *> {
typedef _Tp &reference;
};
template <typename _Iterator> struct __normal_iterator {
_Iterator _M_current;
__normal_iterator(_Iterator &__i) : _M_current(__i) {}
typename iterator_traits<_Iterator>::reference operator*() {
return *_M_current;
}
};
template <typename> struct allocator;
template <typename> struct allocator_traits;
template <typename _Tp> struct allocator_traits<allocator<_Tp>> {
using pointer = _Tp *;
};
struct TPkcs11Token;
struct __alloc_traits : allocator_traits<allocator<TPkcs11Token>> {};
struct _Vector_base {
typedef __alloc_traits::pointer pointer;
struct {
pointer _M_start;
} _M_impl;
};
struct : _Vector_base {
__normal_iterator<pointer> begin() { return _M_impl._M_start; }
} list_tokens_token_list;
struct TPkcs11Token {
int *add_info;
};
void list_tokens() {
for (__normal_iterator base = list_tokens_token_list.begin();;) {
int *add_info = new int;
(*base).add_info = add_info; // { dg-warning "leak" }
}
}