[models] get rid of include-based C++ models

Summary:
These have proved to be too fragile to maintain as they would often break
compilation of user code. They have been off by default for more than a year
now (D7350715).

Removing the include models shows a more accurate picture of what infer results
look like in production. As such, lots of tests have changed, mostly
biabduction but also in inferbo. SIOF was using include-based models too but
now libc++ is better and iostreams are implemented in a way that SIOF
understands (instead of being magical creatures) so nothing changed there.

Reviewed By: skcho

Differential Revision: D16602171

fbshipit-source-id: ce38f045b
master
Jules Villard 5 years ago committed by Facebook Github Bot
parent 675c79480d
commit 13d54990bd

@ -575,9 +575,6 @@ ifeq ($(BUILD_C_ANALYZERS),yes)
$(MKDIR_P) '$(DESTDIR)$(libdir)'/infer/\$$1" --
test -d '$(DESTDIR)$(libdir)/infer/infer/lib/clang_wrappers/' || \
$(MKDIR_P) '$(DESTDIR)$(libdir)/infer/infer/lib/clang_wrappers/'
find infer/models/cpp/include -type d -print0 | xargs -0 -n 1 \
$(SHELL) -x -c "test -d '$(DESTDIR)$(libdir)'/infer/\$$1 || \
$(MKDIR_P) '$(DESTDIR)$(libdir)'/infer/\$$1" --
test -d '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/' || \
$(MKDIR_P) '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/'
test -d '$(DESTDIR)$(libdir)/infer/infer/etc/' || \
@ -621,8 +618,6 @@ ifeq ($(BUILD_C_ANALYZERS),yes)
$(LN_S) ../../bin/infer '$(notdir $(cc))';))
find infer/lib/specs/* -print0 | xargs -0 -I \{\} \
$(INSTALL_DATA) -C \{\} '$(DESTDIR)$(libdir)'/infer/\{\}
find infer/models/cpp/include -not -type d -print0 | xargs -0 -I \{\} \
$(INSTALL_DATA) -C \{\} '$(DESTDIR)$(libdir)'/infer/\{\}
$(INSTALL_DATA) -C 'infer/lib/linter_rules/linters.al' \
'$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/linters.al'
$(INSTALL_DATA) -C 'infer/etc/clang_ast.dict' \

@ -108,8 +108,7 @@ CLANG_DEPS_NO_MODELS = \
$(addprefix $(CAPTURE_LIB_DIR)/, util.py) \
$(INFER_BIN)
CLANG_DEPS = $(CLANG_DEPS_NO_MODELS) $(MODELS_RESULTS_FILE) \
$(shell find $(MODELS_DIR)/cpp/include -type f)
CLANG_DEPS = $(CLANG_DEPS_NO_MODELS) $(MODELS_RESULTS_FILE)
define copy_or_same_file
$(COPY) "$(1)" "$(2)" || diff -q "$(1)" "$(2)"

@ -421,12 +421,9 @@ SIOF CHECKER OPTIONS
--siof-check-iostreams
Activates: Do not assume that iostreams (cout, cerr, ...) are
always initialized. The default is to assume they are always
initialized when --cxx-infer-headers is false to avoid false
positives due to lack of models of the proper initialization of io
streams. However, if your program compiles against a recent
libstdc++ then the infer models are not needed for precision and
it is safe to turn this option on. (Conversely:
--no-siof-check-iostreams)
initialized to avoid false positives. However, if your program
compiles against a recent libstdc++ then it is safe to turn this
option on. (Conversely: --no-siof-check-iostreams)
--siof-safe-methods +string
Methods that are SIOF-safe; "foo::bar" will match "foo::bar()",

@ -217,12 +217,6 @@ CLANG OPTIONS
--no-cxx
Deactivates: Analyze C++ methods (Conversely: --cxx)
--cxx-infer-headers
Activates: Include C++ header models during compilation. Infer
swaps some C++ headers for its own in order to get a better model
of, eg, the standard library. This can sometimes cause compilation
failures. (Conversely: --no-cxx-infer-headers)
--dump-duplicate-symbols
Activates: Dump all symbols with the same name that are defined in
more than one file. (Conversely: --no-dump-duplicate-symbols)

@ -259,12 +259,6 @@ OPTIONS
Deactivates: Analyze C++ methods (Conversely: --cxx)
See also infer-capture(1).
--cxx-infer-headers
Activates: Include C++ header models during compilation. Infer
swaps some C++ headers for its own in order to get a better model
of, eg, the standard library. This can sometimes cause compilation
failures. (Conversely: --no-cxx-infer-headers) See also infer-capture(1).
--cxx-scope-guards json
Specify scope guard classes that can be read only by destructors
without being reported as dead stores. See also infer-analyze(1).
@ -988,12 +982,9 @@ OPTIONS
--siof-check-iostreams
Activates: Do not assume that iostreams (cout, cerr, ...) are
always initialized. The default is to assume they are always
initialized when --cxx-infer-headers is false to avoid false
positives due to lack of models of the proper initialization of io
streams. However, if your program compiles against a recent
libstdc++ then the infer models are not needed for precision and
it is safe to turn this option on. (Conversely:
--no-siof-check-iostreams) See also infer-analyze(1).
initialized to avoid false positives. However, if your program
compiles against a recent libstdc++ then it is safe to turn this
option on. (Conversely: --no-siof-check-iostreams) See also infer-analyze(1).
--siof-only
Activates: Enable --siof and disable all other checkers

@ -259,12 +259,6 @@ OPTIONS
Deactivates: Analyze C++ methods (Conversely: --cxx)
See also infer-capture(1).
--cxx-infer-headers
Activates: Include C++ header models during compilation. Infer
swaps some C++ headers for its own in order to get a better model
of, eg, the standard library. This can sometimes cause compilation
failures. (Conversely: --no-cxx-infer-headers) See also infer-capture(1).
--cxx-scope-guards json
Specify scope guard classes that can be read only by destructors
without being reported as dead stores. See also infer-analyze(1).
@ -988,12 +982,9 @@ OPTIONS
--siof-check-iostreams
Activates: Do not assume that iostreams (cout, cerr, ...) are
always initialized. The default is to assume they are always
initialized when --cxx-infer-headers is false to avoid false
positives due to lack of models of the proper initialization of io
streams. However, if your program compiles against a recent
libstdc++ then the infer models are not needed for precision and
it is safe to turn this option on. (Conversely:
--no-siof-check-iostreams) See also infer-analyze(1).
initialized to avoid false positives. However, if your program
compiles against a recent libstdc++ then it is safe to turn this
option on. (Conversely: --no-siof-check-iostreams) See also infer-analyze(1).
--siof-only
Activates: Enable --siof and disable all other checkers

@ -1,9 +0,0 @@
#include <infer_model/portability.h>
#ifdef INFER_CPP11_ON
#include<infer_model/atomic.h>
#else
// atomic headers don't exist for pre-C++11 code
#endif

@ -1,11 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
// this file exists in gcc headers and we need to capture those includes
#include <infer_model/begin_name_override.inc>
#include_next <backward/auto_ptr.h>
#include <infer_model/end_name_override.inc>

@ -1,12 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
// <atomic> in libstdc++ is including 'bits/atomic_base.h', which gets included
// by other library files as well. Override this header with <atmoic> to avoid
// the problem
#include <atomic>

@ -1,15 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
// locale_conv in libstdc++ is including 'bits/unique_ptr.h' via
// #include "unique_ptr.h". Infer can't redirect those includes
// so instead include unique_ptr via our header first. Then, it
// won't be included again in 'bits/locale_conv.h'
#include <bits/unique_ptr.h>
#include_next <bits/locale_conv.h>

@ -1,13 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
// this file exists in gcc headers and we need to capture those includes
#include <infer_model/begin_name_override.inc>
#include_next <bits/shared_ptr.h>
#include <infer_model/end_name_override.inc>
#include <infer_model/shared_ptr.h>

@ -1,13 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
// this file exists in gcc headers and we need to capture those includes
#include <infer_model/begin_name_override.inc>
#include_next <bits/unique_ptr.h>
#include <infer_model/end_name_override.inc>
#include <infer_model/unique_ptr.h>

@ -1,18 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
// glog/logging library has functionally equivalent but simpler
// definitions of some CHECK_* macros when STATIC_ANALYSIS is defined.
// Since infer wants those definitions, define the macro before including
// glog/logging.h
#ifndef STATIC_ANALYSIS
#define STATIC_ANALYSIS
#include_next <glog/logging.h>
#undef STATIC_ANALYSIS
#else
#include_next <glog/logging.h>
#endif

@ -1,982 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <infer_model/common.h>
#include <infer_model/infer_traits.h>
#include <cstdint>
#include <cstddef>
#include <cstring>
INFER_NAMESPACE_STD_BEGIN
typedef enum memory_order {
memory_order_relaxed,
memory_order_consume,
memory_order_acquire,
memory_order_release,
memory_order_acq_rel,
memory_order_seq_cst
} memory_order;
template <typename T>
T kill_dependency(T y) noexcept {
return y;
}
// lock-free property
#define ATOMIC_BOOL_LOCK_FREE 2
#define ATOMIC_CHAR_LOCK_FREE 2
#define ATOMIC_CHAR16_T_LOCK_FREE 2
#define ATOMIC_CHAR32_T_LOCK_FREE 2
#define ATOMIC_WCHAR_T_LOCK_FREE 2
#define ATOMIC_SHORT_LOCK_FREE 2
#define ATOMIC_INT_LOCK_FREE 2
#define ATOMIC_LONG_LOCK_FREE 2
#define ATOMIC_LLONG_LOCK_FREE 2
#define ATOMIC_POINTER_LOCK_FREE 2
// NOTE1: We are missing the atomic<bool> specialization here. Will need to add
// it when necessary
// NOTE2: In reality, most of the atomic operations, including load, store,
// exchange, etc. are implemented with compiler intrinsics. Some of them are
// really hard to emulate with a source-level model due to various constraints
// in the source language. We try our best here to violate as few constraints as
// possible, but if it turns out to be a problem in practice, we may need to
// consider moving some of the model implementation to BuiltinDefn.
template <typename T>
struct __infer_atomic_base {
bool is_lock_free() const volatile noexcept { return false; }
bool is_lock_free() const noexcept { return false; }
// Note that the biabduction analysis has a hard time understanding memcpy
// with non-array args. If this function turns out to be a blocker for the
// backend, consider moving it to BuiltinDefn.
void store(T t, memory_order mo = memory_order_seq_cst) volatile noexcept {
memcpy(&_wrapped_value, &t, sizeof(T));
}
void store(T t, memory_order mo = memory_order_seq_cst) noexcept {
memcpy(&_wrapped_value, &t, sizeof(T));
}
T load(memory_order mo = memory_order_seq_cst) const volatile noexcept {
return _wrapped_value;
}
T load(memory_order mo = memory_order_seq_cst) const noexcept {
return _wrapped_value;
}
operator T() const volatile noexcept { return _wrapped_value; }
operator T() const noexcept { return _wrapped_value; }
// Note that these two functions are not standard-compliant: if T is not
// copy-constructible, then we are going to get a compilation failure.
// The body of this function could be a candidate for BuiltinDefn, if
// necessary.
T exchange(T t, memory_order mo = memory_order_seq_cst) volatile noexcept {
T tmp = _wrapped_value;
_wrapped_value = t;
return tmp;
}
T exchange(T t, memory_order mo = memory_order_seq_cst) noexcept {
T tmp = _wrapped_value;
_wrapped_value = t;
return tmp;
}
// For arbitrary type T, we have to rely on memcmp/memcpy instead of
// operator==/operator= for comparison/assignment
// Note that the biabduction analysis has a hard time understanding memcpy
// with non-array args. If this function turns out to be a blocker for the
// backend, consider moving it to BuiltinDefn.
bool __infer_compare_exchange_impl(T* expected,
T* desired) volatile noexcept {
if (memcmp(&_wrapped_value, expected, sizeof(T))) {
memcpy(&_wrapped_value, desired, sizeof(T));
return true;
} else {
memcpy(expected, &_wrapped_value, sizeof(T));
return false;
}
}
bool __infer_compare_exchange_impl(T* expected, T* desired) noexcept {
if (memcmp(&_wrapped_value, expected, sizeof(T))) {
memcpy(&_wrapped_value, desired, sizeof(T));
return true;
} else {
memcpy(expected, &_wrapped_value, sizeof(T));
return false;
}
}
bool compare_exchange_weak(
T& expected,
T desired,
memory_order mo = memory_order_seq_cst) volatile noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
bool compare_exchange_weak(T& expected,
T desired,
memory_order mo = memory_order_seq_cst) noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
bool compare_exchange_weak(T& expected,
T desired,
memory_order succ,
memory_order fail) volatile noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
bool compare_exchange_weak(T& expected,
T desired,
memory_order succ,
memory_order fail) noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
bool compare_exchange_strong(
T& expected,
T desired,
memory_order mo = memory_order_seq_cst) volatile noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
bool compare_exchange_strong(
T& expected, T desired, memory_order mo = memory_order_seq_cst) noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
bool compare_exchange_strong(T& expected,
T desired,
memory_order succ,
memory_order fail) volatile noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
bool compare_exchange_strong(T& expected,
T desired,
memory_order succ,
memory_order fail) noexcept {
return __infer_compare_exchange_impl(&expected, &desired);
}
__infer_atomic_base() noexcept = default;
constexpr __infer_atomic_base(T desired) : _wrapped_value(desired) {}
__infer_atomic_base(const __infer_atomic_base&) = delete;
__infer_atomic_base& operator=(const __infer_atomic_base&) = delete;
__infer_atomic_base& operator=(const __infer_atomic_base&) volatile = delete;
T operator=(T other) volatile noexcept {
store(other);
return other;
}
T operator=(T other) noexcept {
store(other);
return other;
}
T _wrapped_value;
};
template <typename T>
struct __infer_atomic_integral : public __infer_atomic_base<T> {
typedef __infer_atomic_base<T> __base;
__infer_atomic_integral() noexcept = default;
constexpr __infer_atomic_integral(T d) noexcept : __base(d) {}
bool is_lock_free() const volatile noexcept { return true; }
bool is_lock_free() const noexcept { return true; }
void store(T t, memory_order mo = memory_order_seq_cst) volatile noexcept {
this->_wrapped_value = t;
}
void store(T t, memory_order mo = memory_order_seq_cst) noexcept {
this->_wrapped_value = t;
}
T load(memory_order mo = memory_order_seq_cst) const volatile noexcept {
return this->_wrapped_value;
}
T load(memory_order mo = memory_order_seq_cst) const noexcept {
return this->_wrapped_value;
}
operator T() const volatile noexcept { return this->_wrapped_value; }
operator T() const noexcept { return this->_wrapped_value; }
bool __infer_compare_exchange_impl(T& expected, T desired) volatile noexcept {
if (this->_wrapped_value == expected) {
this->_wrapped_value = desired;
return true;
} else {
expected = this->_wrapped_value;
return false;
}
}
bool __infer_compare_exchange_impl(T& expected, T desired) noexcept {
if (this->_wrapped_value == expected) {
this->_wrapped_value = desired;
return true;
} else {
expected = this->_wrapped_value;
return false;
}
}
bool compare_exchange_weak(
T& expected,
T desired,
memory_order mo = memory_order_seq_cst) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_weak(T& expected,
T desired,
memory_order mo = memory_order_seq_cst) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_weak(T& expected,
T desired,
memory_order succ,
memory_order fail) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_weak(T& expected,
T desired,
memory_order succ,
memory_order fail) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(
T& expected,
T desired,
memory_order mo = memory_order_seq_cst) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(
T& expected, T desired, memory_order mo = memory_order_seq_cst) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(T& expected,
T desired,
memory_order succ,
memory_order fail) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(T& expected,
T desired,
memory_order succ,
memory_order fail) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
T operator=(T other) volatile noexcept {
this->_wrapped_value = other;
return other;
}
T operator=(T other) noexcept {
this->_wrapped_value = other;
return other;
}
T fetch_add(T op, memory_order mo = memory_order_seq_cst) volatile noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value += op;
return ret;
}
T fetch_add(T op, memory_order mo = memory_order_seq_cst) noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value += op;
return ret;
}
T fetch_sub(T op, memory_order mo = memory_order_seq_cst) volatile noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value -= op;
return ret;
}
T fetch_sub(T op, memory_order mo = memory_order_seq_cst) noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value -= op;
return ret;
}
T fetch_and(T op, memory_order mo = memory_order_seq_cst) volatile noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value &= op;
return ret;
}
T fetch_and(T op, memory_order mo = memory_order_seq_cst) noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value &= op;
return ret;
}
T fetch_or(T op, memory_order mo = memory_order_seq_cst) volatile noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value |= op;
return ret;
}
T fetch_or(T op, memory_order mo = memory_order_seq_cst) noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value |= op;
return ret;
}
T fetch_xor(T op, memory_order mo = memory_order_seq_cst) volatile noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value ^= op;
return ret;
}
T fetch_xor(T op, memory_order mo = memory_order_seq_cst) noexcept {
T ret = this->_wrapped_value;
this->_wrapped_value ^= op;
return ret;
}
T operator++(int) volatile noexcept { return fetch_add(T(1)); }
T operator++(int) noexcept { return fetch_add(T(1)); }
T operator--(int) volatile noexcept { return fetch_sub(T(1)); }
T operator--(int) noexcept { return fetch_sub(T(1)); }
T operator++() volatile noexcept { return fetch_add(T(1)) + T(1); }
T operator++() noexcept { return fetch_add(T(1)) + T(1); }
T operator--() volatile noexcept { return fetch_sub(T(1)) - T(1); }
T operator--() noexcept { return fetch_sub(T(1)) - T(1); }
T operator+=(T op) volatile noexcept { return fetch_add(op) + op; }
T operator+=(T op) noexcept { return fetch_add(op) + op; }
T operator-=(T op) volatile noexcept { return fetch_sub(op) - op; }
T operator-=(T op) noexcept { return fetch_sub(op) - op; }
T operator&=(T op) volatile noexcept { return fetch_and(op) & op; }
T operator&=(T op) noexcept { return fetch_and(op) & op; }
T operator|=(T op) volatile noexcept { return fetch_or(op) | op; }
T operator|=(T op) noexcept { return fetch_or(op) | op; }
T operator^=(T op) volatile noexcept { return fetch_xor(op) ^ op; }
T operator^=(T op) noexcept { return fetch_xor(op) ^ op; }
};
template <typename T>
struct atomic : public __infer_atomic_base<T> {
typedef __infer_atomic_base<T> __base;
atomic() noexcept = default;
constexpr atomic(T d) noexcept : __base(d) {}
T operator=(T d) volatile noexcept {
__base::store(d);
return d;
}
T operator=(T d) noexcept {
__base::store(d);
return d;
}
};
template <>
struct atomic<char> : public __infer_atomic_integral<char> {
typedef __infer_atomic_integral<char> __base;
typedef char __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<signed char> : public __infer_atomic_integral<signed char> {
typedef __infer_atomic_integral<signed char> __base;
typedef signed char __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<unsigned char> : public __infer_atomic_integral<unsigned char> {
typedef __infer_atomic_integral<unsigned char> __base;
typedef unsigned char __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<short> : public __infer_atomic_integral<short> {
typedef __infer_atomic_integral<short> __base;
typedef short __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<unsigned short> : public __infer_atomic_integral<unsigned short> {
typedef __infer_atomic_integral<unsigned short> __base;
typedef unsigned short __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<int> : public __infer_atomic_integral<int> {
typedef __infer_atomic_integral<int> __base;
typedef int __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<unsigned int> : public __infer_atomic_integral<unsigned int> {
typedef __infer_atomic_integral<unsigned int> __base;
typedef unsigned int __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<long> : public __infer_atomic_integral<long> {
typedef __infer_atomic_integral<long> __base;
typedef long __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<unsigned long> : public __infer_atomic_integral<unsigned long> {
typedef __infer_atomic_integral<unsigned long> __base;
typedef unsigned long __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<long long> : public __infer_atomic_integral<long long> {
typedef __infer_atomic_integral<long long> __base;
typedef long long __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<unsigned long long>
: public __infer_atomic_integral<unsigned long long> {
typedef __infer_atomic_integral<unsigned long long> __base;
typedef unsigned long long __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<wchar_t> : public __infer_atomic_integral<wchar_t> {
typedef __infer_atomic_integral<wchar_t> __base;
typedef wchar_t __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<char16_t> : public __infer_atomic_integral<char16_t> {
typedef __infer_atomic_integral<char16_t> __base;
typedef char16_t __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <>
struct atomic<char32_t> : public __infer_atomic_integral<char32_t> {
typedef __infer_atomic_integral<char32_t> __base;
typedef char32_t __integral_type;
atomic() noexcept = default;
constexpr atomic(__integral_type d) noexcept : __base(d) {}
using __base::operator=;
};
template <typename T>
struct atomic<T*> : public __infer_atomic_base<T*> {
typedef __infer_atomic_base<T*> __base;
atomic() noexcept = default;
constexpr atomic(T* d) noexcept : __base(d) {}
bool is_lock_free() const volatile noexcept { return true; }
bool is_lock_free() const noexcept { return true; }
void store(T* t, memory_order mo = memory_order_seq_cst) volatile noexcept {
this->_wrapped_value = t;
}
void store(T* t, memory_order mo = memory_order_seq_cst) noexcept {
this->_wrapped_value = t;
}
T* load(memory_order mo = memory_order_seq_cst) const volatile noexcept {
return this->_wrapped_value;
}
T* load(memory_order mo = memory_order_seq_cst) const noexcept {
return this->_wrapped_value;
}
operator T*() const volatile noexcept { return this->_wrapped_value; }
operator T*() const noexcept { return this->_wrapped_value; }
bool __infer_compare_exchange_impl(T*& expected,
T* desired) volatile noexcept {
if (this->_wrapped_value == expected) {
this->_wrapped_value = desired;
return true;
} else {
expected = this->_wrapped_value;
return false;
}
}
bool __infer_compare_exchange_impl(T*& expected, T* desired) noexcept {
if (this->_wrapped_value == expected) {
this->_wrapped_value = desired;
return true;
} else {
expected = this->_wrapped_value;
return false;
}
}
bool compare_exchange_weak(
T*& expected,
T* desired,
memory_order mo = memory_order_seq_cst) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_weak(T*& expected,
T* desired,
memory_order mo = memory_order_seq_cst) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_weak(T*& expected,
T* desired,
memory_order succ,
memory_order fail) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_weak(T*& expected,
T* desired,
memory_order succ,
memory_order fail) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(
T*& expected,
T* desired,
memory_order mo = memory_order_seq_cst) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(
T*& expected,
T* desired,
memory_order mo = memory_order_seq_cst) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(T*& expected,
T* desired,
memory_order succ,
memory_order fail) volatile noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
bool compare_exchange_strong(T*& expected,
T* desired,
memory_order succ,
memory_order fail) noexcept {
return __infer_compare_exchange_impl(expected, desired);
}
T* operator=(T* d) volatile noexcept {
this->_wrapped_value = d;
return d;
}
T* operator=(T* d) noexcept {
this->_wrapped_value = d;
return d;
}
T* fetch_add(ptrdiff_t op,
memory_order mo = memory_order_seq_cst) volatile noexcept {
T* ret = this->_wrapped_value;
this->_wrapped_value += op;
return ret;
}
T* fetch_add(ptrdiff_t op, memory_order mo = memory_order_seq_cst) noexcept {
T* ret = this->_wrapped_value;
this->_wrapped_value += op;
return ret;
}
T* fetch_sub(ptrdiff_t op,
memory_order mo = memory_order_seq_cst) volatile noexcept {
T* ret = this->_wrapped_value;
this->_wrapped_value -= op;
return ret;
}
T* fetch_sub(ptrdiff_t op, memory_order mo = memory_order_seq_cst) noexcept {
T* ret = this->_wrapped_value;
this->_wrapped_value -= op;
return ret;
}
T* operator++(int) volatile noexcept { return fetch_add(1); }
T* operator++(int) noexcept { return fetch_add(1); }
T* operator--(int) volatile noexcept { return fetch_sub(1); }
T* operator--(int) noexcept { return fetch_sub(1); }
T* operator++() volatile noexcept { return fetch_add(1) + 1; }
T* operator++() noexcept { return fetch_add(1) + T(1); }
T* operator--() volatile noexcept { return fetch_sub(1) - 1; }
T* operator--() noexcept { return fetch_sub(1) - 1; }
T* operator+=(ptrdiff_t op) volatile noexcept { return fetch_add(op) + op; }
T* operator+=(ptrdiff_t op) noexcept { return fetch_add(op) + op; }
T* operator-=(ptrdiff_t op) volatile noexcept { return fetch_sub(op) - op; }
T* operator-=(ptrdiff_t op) noexcept { return fetch_sub(op) - op; }
};
// named typedefs
typedef atomic<bool> atomic_bool;
typedef atomic<char> atomic_char;
typedef atomic<signed char> atomic_schar;
typedef atomic<unsigned char> atomic_uchar;
typedef atomic<short> atomic_short;
typedef atomic<unsigned short> atomic_ushort;
typedef atomic<int> atomic_int;
typedef atomic<unsigned int> atomic_uint;
typedef atomic<long> atomic_long;
typedef atomic<unsigned long> atomic_ulong;
typedef atomic<long long> atomic_llong;
typedef atomic<unsigned long long> atomic_ullong;
typedef atomic<char16_t> atomic_char16_t;
typedef atomic<char32_t> atomic_char32_t;
typedef atomic<wchar_t> atomic_wchar_t;
typedef atomic<int_least8_t> atomic_int_least8_t;
typedef atomic<uint_least8_t> atomic_uint_least8_t;
typedef atomic<int_least16_t> atomic_int_least16_t;
typedef atomic<uint_least16_t> atomic_uint_least16_t;
typedef atomic<int_least32_t> atomic_int_least32_t;
typedef atomic<uint_least32_t> atomic_uint_least32_t;
typedef atomic<int_least64_t> atomic_int_least64_t;
typedef atomic<uint_least64_t> atomic_uint_least64_t;
typedef atomic<int_fast8_t> atomic_int_fast8_t;
typedef atomic<uint_fast8_t> atomic_uint_fast8_t;
typedef atomic<int_fast16_t> atomic_int_fast16_t;
typedef atomic<uint_fast16_t> atomic_uint_fast16_t;
typedef atomic<int_fast32_t> atomic_int_fast32_t;
typedef atomic<uint_fast32_t> atomic_uint_fast32_t;
typedef atomic<int_fast64_t> atomic_int_fast64_t;
typedef atomic<uint_fast64_t> atomic_uint_fast64_t;
typedef atomic<intptr_t> atomic_intptr_t;
typedef atomic<uintptr_t> atomic_uintptr_t;
typedef atomic<size_t> atomic_size_t;
typedef atomic<ptrdiff_t> atomic_ptrdiff_t;
typedef atomic<intmax_t> atomic_intmax_t;
typedef atomic<uintmax_t> atomic_uintmax_t;
// general operations on atomic types
template <typename T>
bool atomic_is_lock_free(const volatile atomic<T>* a) noexcept {
return a->is_lock_free();
}
template <typename T>
void atomic_is_lock_free(const atomic<T>* a) noexcept {
return a->is_lock_free();
}
template <typename T>
void atomic_init(volatile atomic<T>* a, T d) noexcept {
a->store(d);
}
template <typename T>
bool atomic_init(atomic<T>* a, T d) noexcept {
a->store(d);
}
template <typename T>
void atomic_store(volatile atomic<T>* a, T d) noexcept {
a->store(d);
}
template <typename T>
void atomic_store(atomic<T>* a, T d) noexcept {
a->store(d);
}
template <typename T>
void atomic_store_explicit(volatile atomic<T>* a,
T d,
memory_order mo) noexcept {
a->store(d, mo);
}
template <typename T>
void atomic_store_explicit(atomic<T>* a, T d, memory_order mo) noexcept {
a->store(d, mo);
}
template <typename T>
T atomic_load(const volatile atomic<T>* a) noexcept {
return a->load();
}
template <typename T>
T atomic_load(const atomic<T>* a) noexcept {
return a->load();
}
template <typename T>
T atomic_load_explicit(const volatile atomic<T>* a, memory_order mo) noexcept {
return a->load(mo);
}
template <typename T>
T atomic_load_explicit(const atomic<T>* a, memory_order mo) noexcept {
return a->load(mo);
}
template <typename T>
T atomic_exchange(volatile atomic<T>* a, T d) noexcept {
return a->exchange(d);
}
template <typename T>
T atomic_exchange(atomic<T>* a, T d) noexcept {
return a->exchange(d);
}
template <typename T>
T atomic_echange_explicit(volatile atomic<T>* a,
T d,
memory_order mo) noexcept {
return a->exchange(d, mo);
}
template <typename T>
T atomic_exchange_explicit(atomic<T>* a, T d, memory_order mo) noexcept {
return a->exchange(d, mo);
}
template <typename T>
bool atomic_compare_exchange_weak(volatile atomic<T>* a, T* d, T e) noexcept {
return a->compare_exchange_weak(*d, e);
}
template <typename T>
bool atomic_compare_exchange_weak(atomic<T>* a, T* d, T e) noexcept {
return a->compare_exchange_weak(*d, e);
}
template <typename T>
bool atomic_compare_exchange_strong(volatile atomic<T>* a, T* d, T e) noexcept {
return a->compare_exchange_strong(*d, e);
}
template <typename T>
bool atomic_compare_exchange_strong(atomic<T>* a, T* d, T e) noexcept {
return a->compare_exchange_strong(*d, e);
}
template <typename T>
bool atomic_compare_exchange_weak_explicit(volatile atomic<T>* a,
T* d,
T e,
memory_order so,
memory_order fo) noexcept {
return a->compare_exchange_weak(*d, e, so, fo);
}
template <typename T>
bool atomic_compare_exchange_weak_explicit(
atomic<T>* a, T* d, T e, memory_order so, memory_order fo) noexcept {
return a->compare_exchange_weak(*d, e, so, fo);
}
template <typename T>
bool atomic_compare_exchange_strong_explicit(volatile atomic<T>* a,
T* d,
T e,
memory_order so,
memory_order fo) noexcept {
return a->compare_exchange_strong(*d, e, so, fo);
}
template <typename T>
bool atomic_compare_exchange_strong_explicit(
atomic<T>* a, T* d, T e, memory_order so, memory_order fo) noexcept {
return a->compare_exchange_strong(*d, e, so, fo);
}
template <typename T>
T atomic_fetch_add(volatile __infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_add(i);
}
template <typename T>
T atomic_fetch_add(__infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_add(i);
}
template <typename T>
T atomic_fetch_add_explicit(volatile __infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_add(i, mo);
}
template <typename T>
T atomic_fetch_add_explicit(__infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_add(i, mo);
}
template <typename T>
T atomic_fetch_sub(volatile __infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_sub(i);
}
template <typename T>
T atomic_fetch_sub(__infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_sub(i);
}
template <typename T>
T atomic_fetch_sub_explicit(volatile __infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_sub(i, mo);
}
template <typename T>
T atomic_fetch_sub_explicit(__infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_sub(i, mo);
}
template <typename T>
T atomic_fetch_and(volatile __infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_and(i);
}
template <typename T>
T atomic_fetch_and(__infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_and(i);
}
template <typename T>
T atomic_fetch_and_explicit(volatile __infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_and(i, mo);
}
template <typename T>
T atomic_fetch_and_explicit(__infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_and(i, mo);
}
template <typename T>
T atomic_fetch_or(volatile __infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_or(i);
}
template <typename T>
T atomic_fetch_or(__infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_or(i);
}
template <typename T>
T atomic_fetch_or_explicit(volatile __infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_or(i, mo);
}
template <typename T>
T atomic_fetch_or_explicit(__infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_or(i, mo);
}
template <typename T>
T atomic_fetch_xor(volatile __infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_xor(i);
}
template <typename T>
T atomic_fetch_xor(__infer_atomic_integral<T>* a, T i) noexcept {
return a->fetch_xor(i);
}
template <typename T>
T atomic_fetch_xor_explicit(volatile __infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_xor(i, mo);
}
template <typename T>
T atomic_fetch_xor_explicit(__infer_atomic_integral<T>* a,
T i,
memory_order mo) noexcept {
return a->fetch_xor(i, mo);
}
// partial specialization for pointers
template <typename T>
T* atomic_fetch_add(volatile atomic<T*>* a, ptrdiff_t i) noexcept {
return a->fetch_add(i);
}
template <typename T>
T* atomic_fetch_add(atomic<T*>* a, ptrdiff_t i) noexcept {
return a->fetch_add(i);
}
template <typename T>
T* atomic_fetch_add_explicit(volatile atomic<T*>* a,
ptrdiff_t i,
memory_order mo) noexcept {
return a->fetch_add(i, mo);
}
template <typename T>
T* atomic_fetch_add_explicit(atomic<T*>* a,
ptrdiff_t i,
memory_order mo) noexcept {
return a->fetch_add(i, mo);
}
template <typename T>
T* atomic_fetch_sub(volatile atomic<T*>* a, ptrdiff_t i) noexcept {
return a->fetch_sub(i);
}
template <typename T>
T* atomic_fetch_sub(atomic<T*>* a, ptrdiff_t i) noexcept {
return a->fetch_sub(i);
}
template <typename T>
T* atomic_fetch_sub_explicit(volatile atomic<T*>* a,
ptrdiff_t i,
memory_order mo) noexcept {
return a->fetch_sub(i, mo);
}
template <typename T>
T* atomic_fetch_sub_explicit(atomic<T*>* a,
ptrdiff_t i,
memory_order mo) noexcept {
return a->fetch_sub(i, mo);
}
typedef struct atomic_flag {
bool a;
atomic_flag() noexcept = default;
constexpr atomic_flag(bool i) noexcept : a(i) {}
atomic_flag(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) volatile = delete;
bool test_and_set(memory_order mo = memory_order_seq_cst) volatile noexcept {
bool ret = a;
a = true;
return ret;
}
bool test_and_set(memory_order mo = memory_order_seq_cst) noexcept {
bool ret = a;
a = true;
return ret;
}
void clear(memory_order mo = memory_order_seq_cst) volatile noexcept {
a = false;
}
void clear(memory_order mo = memory_order_seq_cst) noexcept { a = false; }
} atomic_flag;
bool atomic_flag_test_and_set(volatile atomic_flag* f) noexcept {
return f->test_and_set();
}
bool atomic_flag_test_and_set(atomic_flag* f) noexcept {
return f->test_and_set();
}
bool atomic_flag_test_and_set_explicit(volatile atomic_flag* f,
memory_order m) noexcept {
return f->test_and_set(m);
}
bool atomic_flag_test_and_set_explicit(atomic_flag* f,
memory_order m) noexcept {
return f->test_and_set(m);
}
void atomic_flag_clear(volatile atomic_flag* f) noexcept { f->clear(); }
void atomic_flag_clear(atomic_flag* f) noexcept { f->clear(); }
void atomic_flag_clear_explicit(volatile atomic_flag* f,
memory_order mo) noexcept {
f->clear(mo);
}
void atomic_flag_clear_explicit(atomic_flag* f, memory_order mo) noexcept {
f->clear(mo);
}
void atomic_thread_fence(memory_order mo) noexcept {}
void atomic_signal_fence(memory_order mo) noexcept {}
#define ATOMIC_FLAG_INIT \
{ false }
#define ATOMIC_VAR_INIT(__v) \
{ __v }
INFER_NAMESPACE_STD_END

@ -1,13 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#define make_shared std__make_shared
#define enable_shared_from_this std__enable_shared_from_this
#define shared_ptr std__shared_ptr
#define unique_ptr std__unique_ptr
#define make_unique std__make_unique
#define weak_ptr std__weak_ptr

@ -1,11 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <infer_model/portability.h>
#include <infer_no_model/crash_on_exec.h>

@ -1,13 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#undef make_shared
#undef enable_shared_from_this
#undef shared_ptr
#undef unique_ptr
#undef make_unique
#undef weak_ptr

@ -1,18 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
namespace infer_traits {
// all friends of this class and will be translated as type T by infer
// frontend instead of their own type
template <class T>
class TranslateAsType {};
} // namespace infer_traits
#define INFER_MODEL_AS_DEREF_FIRST_ARG \
__attribute__((annotate("__infer_replace_with_deref_first_arg"))) {}

@ -1,13 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include_next <iostream>
// this is a marker so that infer can tell whether iostream has been included by
// a give source file
std::ios_base::Init __infer_translation_unit_init_streams;

@ -1,51 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
// This is a hacky attempt to follow what folly does
// https://github.com/facebook/folly/blob/b1eb6819f3ffe6b645f39d505ca8ace3116b7873/folly/configure.ac#L232
// Depending whether the project is compiled with libc++ or stdlibc++, include
// their internal config headers to get information about versions
// clang-format off
#if __has_include(<__config>) // defines _LIBCPP_VERSION
#include <__config>
#elif __has_include(<bits/c++config.h>) // defines __GLIBCXX__
#include <bits/c++config.h>
#endif
// clang-format on
// Figure out whether the library really supports c++11 standard
#if __cplusplus >= 201103L
#if __GLIBCXX__ >= 20130531
// C++11 is really supported from gcc 4.8.1 onward.
#define INFER_CPP11_ON 1
#elif defined _LIBCPP_VERSION // for now assume libc++ always supported c++11
#define INFER_CPP11_ON 1
#endif
#endif // __cplusplus >= 201103L
#if !defined(INFER_USE_LIBCPP) && defined(_LIBCPP_VERSION)
#define INFER_USE_LIBCPP 1
#elif defined(FOLLY_USE_LIBCPP) // follow folly configuration if it's available
#define INFER_USE_LIBCPP 1
#endif
// Follow what folly does - gnu libstdc++ implementation is different from
// llvm's libc++. This way folly can forward declare decls from std library
// even when they are infer models
// https://github.com/facebook/folly/blob/b1eb6819f3ffe6b645f39d505ca8ace3116b7873/folly/Portability.h#L253-L255
// On top of that, define platform-dependent STL iterators.
#if INFER_USE_LIBCPP
#include <__config>
#define INFER_NAMESPACE_STD_BEGIN _LIBCPP_BEGIN_NAMESPACE_STD
#define INFER_NAMESPACE_STD_END _LIBCPP_END_NAMESPACE_STD
#define STD_ITER(T, C) __wrap_iter<T>
#else
#define INFER_NAMESPACE_STD_BEGIN namespace std {
#define INFER_NAMESPACE_STD_END }
#define STD_ITER(T, C) __gnu_cxx::__normal_iterator<T, C>
#endif

@ -1,431 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
// ASSERT that __cplusplus >= 201103L
#include <infer_model/common.h>
#include <infer_model/infer_traits.h>
#include <infer_model/weak_ptr.h>
INFER_NAMESPACE_STD_BEGIN
// use inheritance to avoid compilation errors when using
// methods / non-member functions that are not modeled
// WARNING: if sizeof(shared_ptr) becomes different than 16, it may
// lead to compilation errors
template <class T>
class shared_ptr : public std__shared_ptr<T> {
// translate shared_ptr as type T*
friend class infer_traits::TranslateAsType<T*>;
// shared_ptr<T> in infer is translated as T*.
// Some facts:
// 1. shared_ptr<T>* translated as T**
// 2. typeof(this) translated as T**
// 3. typeof(this) in clang's AST is shared_ptr<T>*
// When writing models for shared_ptr, we need to use infer's representation
// In order to achieve that and not break compilation, there is some ugly
// casting going around. We are using void* and void** to make compilation
// happy - infer doesn't care about those types that much since they are
// pointers anyway.
// Example of model_X function declaration:
// static void model_X(infer_shared_ptr_t self, ... params)
// model_X are really C functions, but to simplify linking process, they are
// defined inside shared_ptr class as static methods.
// When using model_X functions, call them like so:
// model_X(__cast_to_infer_ptr(this), args)
/// type of 'this' in shared_ptr<T> as seen by infer
typedef const void** infer_shared_ptr_t;
// use it to avoid compilation errors and make infer analyzer happy
#define __cast_to_infer_ptr(self) ((infer_shared_ptr_t)self)
// provide overload for volatile void* to accommodate for situation when
// T is volatile ('volatile int' for example). 'void*' and 'nullptr_t'
// overloads are to avoid 'call to model_set is ambiguous' compilation errors
static void model_set(infer_shared_ptr_t self, nullptr_t value) {
*self = value;
}
static void model_set(infer_shared_ptr_t self, const void* value) {
*self = value;
}
static void model_set(infer_shared_ptr_t self, volatile void* value) {
*self = const_cast<const void*>(value);
}
static void model_set(infer_shared_ptr_t self, void* value) {
*self = const_cast<const void*>(value);
}
static void model_copy(infer_shared_ptr_t self, infer_shared_ptr_t other) {
/* TODO - increase refcount*/
*self = *other;
}
static void model_move(infer_shared_ptr_t self, infer_shared_ptr_t other) {
model_copy(self, other);
model_set(other, nullptr);
}
static void model_swap(infer_shared_ptr_t infer_self,
infer_shared_ptr_t infer_other) {
const void* t = *infer_self;
*infer_self = *infer_other;
*infer_other = t;
}
public:
// Conversion constructors to allow implicit conversions.
// it's here purely to avoid compilation errors
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr(const std__shared_ptr<Y>& r) {}
template <class Y>
shared_ptr(const std__shared_ptr<Y>& r, T* p) noexcept {}
// constructors:
constexpr shared_ptr() noexcept {
model_set(__cast_to_infer_ptr(this), nullptr);
}
shared_ptr(nullptr_t) : shared_ptr() {}
// Extra template argument is used to create constructors/assignment overloads
// for Y types where it's possible to convert Y* to T*.
// typename = typename enable_if<is_convertible<Y*, T*>::value>::type
// thanks to that, clang will not create some functions that would cause
// compilation errors. More info:
// http://en.cppreference.com/w/cpp/language/sfinae
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
explicit shared_ptr(Y* p) {
model_set(__cast_to_infer_ptr(this), p);
}
template <class Y,
class D,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr(Y* p, D d) : shared_ptr<T>(p) {}
template <class Y,
class D,
class A,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr(Y* p, D d, A a) : shared_ptr<T>(p) {}
template <class D>
shared_ptr(nullptr_t p, D d) : shared_ptr<T>(p) {}
template <class D, class A>
shared_ptr(nullptr_t p, D d, A a) : shared_ptr<T>(p) {}
template <class Y>
shared_ptr(const shared_ptr<Y>& r, T* p) noexcept {
model_set(__cast_to_infer_ptr(this), p); /* TODO */
}
shared_ptr(const shared_ptr& r) noexcept {
model_copy(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr(const shared_ptr<Y>& r) noexcept {
model_copy(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
}
shared_ptr(shared_ptr&& r) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr(shared_ptr<Y>&& r) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
explicit shared_ptr(const weak_ptr<Y>& r) : shared_ptr(std::move(r.lock())) {
// TODO: throw if r is empty
}
/* Because of implementation differences between libc++ and stdlibc++, don't
* define this constructor (it will be defined elsewhere in case of
* stdlibc++). Because it may be defined elsewhere, don't check whether Y*
* converts to T* - otherwise there might be compilation error (out-of-line
* definition).
* No definition here might cause compilation problems if project is
* using auto_ptrs with libc++ */
template <class Y>
shared_ptr(auto_ptr<Y>&& r); // {}
template <class Y,
class D,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr(unique_ptr<Y, D>&& r) : shared_ptr<T>(r.release()) {}
// destructor:
~shared_ptr() { reset((T*)nullptr); }
// assignment:
shared_ptr& operator=(const shared_ptr& r) noexcept {
// shared_ptr<T>(r).swap(*this);
model_copy(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
return *this;
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr& operator=(const shared_ptr<Y>& r) noexcept {
// shared_ptr<T>(r).swap(*this);
model_copy(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
return *this;
}
shared_ptr& operator=(shared_ptr&& r) noexcept {
// shared_ptr<T>(std::move(r)).swap(*this);
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
return *this;
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr& operator=(shared_ptr<Y>&& r) {
// shared_ptr<T>(std::move(r)).swap(*this);
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
return *this;
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr& operator=(auto_ptr<Y>&& r) { /* ?? */
}
template <class Y,
class D,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
shared_ptr& operator=(unique_ptr<Y, D>&& r) {
// shared_ptr<T>(std::move(r)).swap(*this);
return *this;
}
// modifiers:
void swap(shared_ptr& r) noexcept {
model_swap(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r));
}
void reset() noexcept { reset((T*)nullptr); }
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
void reset(Y* p) {
/*
if (unique()) {
delete __data;
}
*/
model_set(__cast_to_infer_ptr(this), p);
// TODO adjust refcounts
}
template <class Y,
class D,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
void reset(Y* p, D d) {
reset(p);
}
template <class Y,
class D,
class A,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
void reset(Y* p, D d, A a) {
reset(p);
}
// observers:
T* get() const noexcept INFER_MODEL_AS_DEREF_FIRST_ARG;
typename std::add_lvalue_reference<T>::type operator*() const
noexcept INFER_MODEL_AS_DEREF_FIRST_ARG;
T* operator->() const noexcept INFER_MODEL_AS_DEREF_FIRST_ARG;
long use_count() const noexcept { return 2; /* FIXME */ }
bool unique() const noexcept { return use_count() == 1; /* FIXME */ }
explicit operator bool() const noexcept {
// for some reason analyzer can't cast to bool correctly, trick with two
// negations creates right specs for this function
return !!(bool)(*__cast_to_infer_ptr(this));
}
template <class U>
bool owner_before(shared_ptr<U> const& b) const {
return true; /* FIXME - use non-det*/
}
template <class U>
bool owner_before(weak_ptr<U> const& b) const {
return true; /* FIXME - use non-det */
}
};
template <class _Tp, class _Up>
inline bool operator==(const shared_ptr<_Tp>& __x,
const shared_ptr<_Up>& __y) noexcept {
return __x.get() == __y.get();
}
template <class _Tp, class _Up>
inline bool operator!=(const shared_ptr<_Tp>& __x,
const shared_ptr<_Up>& __y) noexcept {
return !(__x == __y);
}
template <class _Tp, class _Up>
inline bool operator<(const shared_ptr<_Tp>& __x,
const shared_ptr<_Up>& __y) noexcept {
typedef typename common_type<_Tp*, _Up*>::type _Vp;
return less<_Vp>()(__x.get(), __y.get());
}
template <class _Tp, class _Up>
inline bool operator>(const shared_ptr<_Tp>& __x,
const shared_ptr<_Up>& __y) noexcept {
return __y < __x;
}
template <class _Tp, class _Up>
inline bool operator<=(const shared_ptr<_Tp>& __x,
const shared_ptr<_Up>& __y) noexcept {
return !(__y < __x);
}
template <class _Tp, class _Up>
inline bool operator>=(const shared_ptr<_Tp>& __x,
const shared_ptr<_Up>& __y) noexcept {
return !(__x < __y);
}
template <class _Tp>
inline bool operator==(const shared_ptr<_Tp>& __x, nullptr_t) noexcept {
return !__x;
}
template <class _Tp>
inline bool operator==(nullptr_t, const shared_ptr<_Tp>& __x) noexcept {
return !__x;
}
template <class _Tp>
inline bool operator!=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept {
return static_cast<bool>(__x);
}
template <class _Tp>
inline bool operator!=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept {
return static_cast<bool>(__x);
}
template <class _Tp>
inline bool operator<(const shared_ptr<_Tp>& __x, nullptr_t) noexcept {
return less<_Tp*>()(__x.get(), nullptr);
}
template <class _Tp>
inline bool operator<(nullptr_t, const shared_ptr<_Tp>& __x) noexcept {
return less<_Tp*>()(nullptr, __x.get());
}
template <class _Tp>
inline bool operator>(const shared_ptr<_Tp>& __x, nullptr_t) noexcept {
return nullptr < __x;
}
template <class _Tp>
inline bool operator>(nullptr_t, const shared_ptr<_Tp>& __x) noexcept {
return __x < nullptr;
}
template <class _Tp>
inline bool operator<=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept {
return !(nullptr < __x);
}
template <class _Tp>
inline bool operator<=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept {
return !(__x < nullptr);
}
template <class _Tp>
inline bool operator>=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept {
return !(__x < nullptr);
}
template <class _Tp>
inline bool operator>=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept {
return !(nullptr < __x);
}
template <class T>
struct hash<shared_ptr<T>> : public hash<std__shared_ptr<T>> {};
// shared_ptr casts - call original functions but change return type to
// std::shared_ptr
template <class T, class U>
shared_ptr<T> static_pointer_cast(shared_ptr<U> const& r) noexcept {
return static_pointer_cast<T, U>((const std__shared_ptr<U>&)r);
}
template <class T, class U>
shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const& r) noexcept {
return dynamic_pointer_cast<T, U>((const std__shared_ptr<U>&)r);
}
template <class T, class U>
shared_ptr<T> const_pointer_cast(shared_ptr<U> const& r) noexcept {
return const_pointer_cast<T, U>((const std__shared_ptr<U>&)r);
}
template <class T>
class enable_shared_from_this : public std__enable_shared_from_this<T> {
public:
shared_ptr<T> shared_from_this() {
return std__enable_shared_from_this<T>::shared_from_this();
}
shared_ptr<T const> shared_from_this() const {
return std__enable_shared_from_this<T>::shared_from_this();
}
};
template <class T, class... Args>
shared_ptr<T> make_shared(Args&&... args) {
return shared_ptr<T>(::new T(std::forward<Args>(args)...));
}
template <class T>
struct owner_less;
template <class T>
struct owner_less<shared_ptr<T>>
: binary_function<shared_ptr<T>, shared_ptr<T>, bool> {
typedef bool result_type;
bool operator()(shared_ptr<T> const& x, shared_ptr<T> const& y) const {
return x.owner_before(y);
}
bool operator()(shared_ptr<T> const& x, weak_ptr<T> const& y) const {
return x.owner_before(y);
}
bool operator()(weak_ptr<T> const& x, shared_ptr<T> const& y) const {
return x.owner_before(y);
}
};
#undef __cast_to_infer_ptr
INFER_NAMESPACE_STD_END

@ -1,473 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <infer_model/common.h>
#include <infer_model/infer_traits.h>
INFER_NAMESPACE_STD_BEGIN
// IMPORTANT
// There is specialization of unique_ptr below and it's mosly copy paste.
// When changing model, remember to change it for specialization as well!
template <class _Tp, class _Dp = default_delete<_Tp>>
struct unique_ptr {
// use SFINAE to determine whether _Del::pointer exists
class _Pointer {
template <typename _Up>
static typename _Up::pointer __test(typename _Up::pointer*);
template <typename _Up>
static _Tp* __test(...);
typedef typename remove_reference<_Dp>::type _Del;
public:
typedef decltype(__test<_Del>(0)) type;
};
public:
typedef typename _Pointer::type pointer;
typedef _Tp element_type;
typedef _Dp deleter_type;
private:
/* std::unique_ptr<T> in infer is translated as T*
Look at model of std::shared_ptr for more details */
// translate shared_ptr as type 'pointer'
friend class infer_traits::TranslateAsType<pointer>;
/// type of 'this' in unique_ptr<T> as seen by infer
typedef const void** infer_unique_ptr_t;
// use it to avoid compilation errors and make infer analyzer happy
#define __cast_to_infer_ptr(self) ((infer_unique_ptr_t)self)
// provide overload for volatile void* to accommodate for situation when
// T is volatile ('volatile int' for example). 'void*' and 'nullptr_t'
// overloads are to avoid 'call to model_set is ambiguous' compilation errors
static void model_set(infer_unique_ptr_t self, nullptr_t value) noexcept {
*self = value;
}
static void model_set(infer_unique_ptr_t self, const void* value) noexcept {
*self = value;
}
static void model_set(infer_unique_ptr_t self,
volatile void* value) noexcept {
*self = const_cast<const void*>(value);
}
static void model_set(infer_unique_ptr_t self, void* value) noexcept {
*self = const_cast<const void*>(value);
}
// in case 'pointer' type is not type pointer, enable catch all overload of
// `model_set` to prevent compliation issues
static void model_set(...) noexcept { /* no model for this overload */
}
static void model_move(infer_unique_ptr_t self,
infer_unique_ptr_t other) noexcept {
*self = *other;
model_set(other, nullptr);
}
static void model_swap(infer_unique_ptr_t infer_self,
infer_unique_ptr_t infer_other) noexcept {
const void* t = *infer_self;
*infer_self = *infer_other;
*infer_other = t;
}
pointer __ignore__; // used to keep sizeof(unique_ptr) same as in standard
public:
template <class Y>
unique_ptr(const std__unique_ptr<Y>& u) {}
constexpr unique_ptr() noexcept {
model_set(__cast_to_infer_ptr(this), nullptr);
}
constexpr unique_ptr(nullptr_t) noexcept : unique_ptr<_Tp, _Dp>() {}
explicit unique_ptr(pointer ptr) noexcept {
model_set(__cast_to_infer_ptr(this), ptr);
}
unique_ptr(pointer ptr,
typename conditional<
is_reference<deleter_type>::value,
deleter_type,
typename add_lvalue_reference<const deleter_type>::type>::type
__d) noexcept
: unique_ptr<_Tp, _Dp>(ptr) {}
unique_ptr(pointer ptr,
typename remove_reference<deleter_type>::type&& __d) noexcept
: unique_ptr<_Tp, _Dp>(ptr) {}
unique_ptr(unique_ptr&& u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&u));
}
template <class _Up,
class _Ep,
typename = typename enable_if<
!is_array<_Up>::value &&
is_convertible<typename unique_ptr<_Up, _Ep>::pointer,
pointer>::value &&
is_convertible<_Ep, deleter_type>::value &&
(!is_reference<deleter_type>::value ||
is_same<deleter_type, _Ep>::value)>::type>
unique_ptr(unique_ptr<_Up, _Ep>&& u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&u));
}
template <
class _Up,
typename = typename enable_if<is_convertible<_Up*, _Tp*>::value>::type>
unique_ptr(auto_ptr<_Up>&& __p) noexcept;
~unique_ptr() { reset(); }
unique_ptr& operator=(unique_ptr&& __u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&__u));
return *this;
}
template <class _Up,
class _Ep,
typename = typename enable_if<
!is_array<_Up>::value &&
is_convertible<typename unique_ptr<_Up, _Ep>::pointer,
pointer>::value &&
is_assignable<deleter_type&, _Ep&&>::value>::type>
unique_ptr& operator=(unique_ptr<_Up, _Ep>&& __u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&__u));
return *this;
}
unique_ptr& operator=(nullptr_t) noexcept {
reset();
return *this;
}
typename add_lvalue_reference<_Tp>::type operator*() const
INFER_MODEL_AS_DEREF_FIRST_ARG;
pointer operator->() const INFER_MODEL_AS_DEREF_FIRST_ARG;
pointer get() const INFER_MODEL_AS_DEREF_FIRST_ARG;
typedef typename remove_reference<deleter_type>::type& _Dp_reference;
typedef const typename remove_reference<deleter_type>::type&
_Dp_const_reference;
_Dp_const_reference get_deleter() const {}
_Dp_reference get_deleter() {}
explicit operator bool() const {
return !!(bool)(*__cast_to_infer_ptr(this));
}
pointer release() INFER_MODEL_AS_DEREF_FIRST_ARG;
void reset(pointer p = nullptr) { model_set(__cast_to_infer_ptr(this), p); }
void swap(unique_ptr& u) {
model_swap(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&u));
}
};
template <class _Tp, class _Dp>
struct unique_ptr<_Tp[], _Dp> {
// use SFINAE to determine whether _Del::pointer exists
class _Pointer {
template <typename _Up>
static typename _Up::pointer __test(typename _Up::pointer*);
template <typename _Up>
static _Tp* __test(...);
typedef typename remove_reference<_Dp>::type _Del;
public:
typedef decltype(__test<_Del>(0)) type;
};
public:
typedef typename _Pointer::type pointer;
typedef _Tp element_type;
typedef _Dp deleter_type;
private:
// translate shared_ptr as type pointer
friend class infer_traits::TranslateAsType<pointer>;
/// type of 'this' in unique_ptr<T> as seen by infer
typedef const void** infer_unique_ptr_t;
// use it to avoid compilation errors and make infer analyzer happy
#define __cast_to_infer_ptr(self) ((infer_unique_ptr_t)self)
static void model_set(infer_unique_ptr_t self, const void* value) noexcept {
*self = value;
}
// in case 'pointer' type is not type pointer, enable catch all overload of
// `model_set` to prevent compliation issues
static void model_set(...) noexcept { /* no model for this overload */
}
static void model_move(infer_unique_ptr_t self,
infer_unique_ptr_t other) noexcept {
*self = *other;
model_set(other, nullptr);
}
static void model_swap(infer_unique_ptr_t infer_self,
infer_unique_ptr_t infer_other) noexcept {
const void* t = *infer_self;
*infer_self = *infer_other;
*infer_other = t;
}
pointer __ignore__; // used to keep sizeof(unique_ptr) same as in standard
public:
constexpr unique_ptr() noexcept {
model_set(__cast_to_infer_ptr(this), nullptr);
}
constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() {}
explicit unique_ptr(pointer ptr) noexcept {
model_set(__cast_to_infer_ptr(this), ptr);
}
unique_ptr(pointer ptr,
typename conditional<
is_reference<deleter_type>::value,
deleter_type,
typename add_lvalue_reference<const deleter_type>::type>::type
__d) noexcept
: unique_ptr(ptr) {}
unique_ptr(pointer ptr,
typename remove_reference<deleter_type>::type&& __d) noexcept
: unique_ptr(ptr) {}
unique_ptr(unique_ptr&& u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&u));
}
template <class _Up,
class _Ep,
typename = typename enable_if<
is_array<_Up>::value &&
is_convertible<typename unique_ptr<_Up, _Ep>::pointer,
pointer>::value &&
is_convertible<_Ep, deleter_type>::value &&
(!is_reference<deleter_type>::value ||
is_same<deleter_type, _Ep>::value)>::type>
unique_ptr(unique_ptr<_Up, _Ep>&& u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&u));
}
template <
class _Up,
typename = typename enable_if<is_convertible<_Up*, _Tp*>::value>::type>
unique_ptr(auto_ptr<_Up>&& __p) noexcept;
~unique_ptr() { reset(); }
unique_ptr& operator=(unique_ptr&& __u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&__u));
return *this;
}
template <class _Up,
class _Ep,
typename = typename enable_if<
is_array<_Up>::value &&
is_convertible<typename unique_ptr<_Up, _Ep>::pointer,
pointer>::value &&
is_assignable<deleter_type&, _Ep&&>::value>::type>
unique_ptr& operator=(unique_ptr<_Up, _Ep>&& __u) noexcept {
model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&__u));
return *this;
}
unique_ptr& operator=(nullptr_t) noexcept {
reset();
return *this;
}
typename add_lvalue_reference<_Tp>::type operator[](size_t i) const
INFER_MODEL_AS_DEREF_FIRST_ARG;
pointer get() const INFER_MODEL_AS_DEREF_FIRST_ARG;
typedef typename remove_reference<deleter_type>::type& _Dp_reference;
typedef const typename remove_reference<deleter_type>::type&
_Dp_const_reference;
_Dp_const_reference get_deleter() const {}
_Dp_reference get_deleter() {}
explicit operator bool() const {
return !!(bool)(*__cast_to_infer_ptr(this));
}
pointer release() INFER_MODEL_AS_DEREF_FIRST_ARG;
void reset(pointer p = nullptr) { model_set(__cast_to_infer_ptr(this), p); }
void swap(unique_ptr& u) {
model_swap(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&u));
}
};
template <class _T1, class _D1, class _T2, class _D2>
inline bool operator==(const unique_ptr<_T1, _D1>& __x,
const unique_ptr<_T2, _D2>& __y) {
return __x.get() == __y.get();
}
template <class _T1, class _D1, class _T2, class _D2>
inline bool operator!=(const unique_ptr<_T1, _D1>& __x,
const unique_ptr<_T2, _D2>& __y) {
return !(__x == __y);
}
template <class _T1, class _D1, class _T2, class _D2>
inline bool operator<(const unique_ptr<_T1, _D1>& __x,
const unique_ptr<_T2, _D2>& __y) {
/*typedef typename unique_ptr<_T1, _D1>::pointer _P1;
typedef typename unique_ptr<_T2, _D2>::pointer _P2;
typedef typename common_type<_P1, _P2>::type _Vp;
return less<_Vp>()(__x.get(), __y.get());*/
}
template <class _T1, class _D1, class _T2, class _D2>
inline bool operator>(const unique_ptr<_T1, _D1>& __x,
const unique_ptr<_T2, _D2>& __y) {
return __y < __x;
}
template <class _T1, class _D1, class _T2, class _D2>
inline bool operator<=(const unique_ptr<_T1, _D1>& __x,
const unique_ptr<_T2, _D2>& __y) {
return !(__y < __x);
}
template <class _T1, class _D1, class _T2, class _D2>
inline bool operator>=(const unique_ptr<_T1, _D1>& __x,
const unique_ptr<_T2, _D2>& __y) {
return !(__x < __y);
}
template <class _T1, class _D1>
inline bool operator==(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
return !__x;
}
template <class _T1, class _D1>
inline bool operator==(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
return !__x;
}
template <class _T1, class _D1>
inline bool operator!=(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
return static_cast<bool>(__x);
}
template <class _T1, class _D1>
inline bool operator!=(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
return static_cast<bool>(__x);
}
template <class _T1, class _D1>
inline bool operator<(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
/*typedef typename unique_ptr<_T1, _D1>::pointer _P1;
return less<_P1>()(__x.get(), nullptr);*/
}
template <class _T1, class _D1>
inline bool operator<(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
/*typedef typename unique_ptr<_T1, _D1>::pointer _P1;
return less<_P1>()(nullptr, __x.get());*/
}
template <class _T1, class _D1>
inline bool operator>(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
return nullptr < __x;
}
template <class _T1, class _D1>
inline bool operator>(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
return __x < nullptr;
}
template <class _T1, class _D1>
inline bool operator<=(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
return !(nullptr < __x);
}
template <class _T1, class _D1>
inline bool operator<=(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
return !(__x < nullptr);
}
template <class _T1, class _D1>
inline bool operator>=(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
return !(__x < nullptr);
}
template <class _T1, class _D1>
inline bool operator>=(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
return !(nullptr < __x);
}
template <class T, class D>
struct hash<unique_ptr<T, D>> : public hash<std__unique_ptr<T, D>> {
size_t operator()(const unique_ptr<T, D>& __u) const noexcept {}
};
template <typename _Tp>
struct _MakeUniq2 {
typedef unique_ptr<_Tp> __single_object;
};
template <typename _Tp>
struct _MakeUniq2<_Tp[]> {
typedef unique_ptr<_Tp[]> __array;
};
template <typename _Tp, size_t _Bound>
struct _MakeUniq2<_Tp[_Bound]> {
struct __invalid_type {};
};
/// std::make_unique for single objects
template <typename _Tp, typename... _Args>
inline typename _MakeUniq2<_Tp>::__single_object make_unique(
_Args&&... __args) {
return unique_ptr<_Tp>(::new _Tp(std::forward<_Args>(__args)...));
}
/// std::make_unique for arrays of unknown bound
template <typename _Tp>
inline typename _MakeUniq2<_Tp>::__array make_unique(size_t __num) {
return unique_ptr<_Tp>(::new typename remove_extent<_Tp>::type[__num]());
}
/// Disable std::make_unique for arrays of known bound
template <typename _Tp, typename... _Args>
inline typename _MakeUniq2<_Tp>::__invalid_type make_unique(_Args&&...) =
delete;
INFER_NAMESPACE_STD_END
#undef __cast_to_infer_ptr

@ -1,650 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <type_traits>
#include <climits>
#include <limits>
#include <initializer_list>
#include <stdexcept>
#include <memory>
#include <cstring>
#include <cassert>
#include <infer_model/common.h>
#include <infer_model/infer_traits.h>
#ifdef INFER_USE_LIBCPP
// libc++ vector header includes it, but it breaks
// compilation with stdlibc++ implementation
#include <algorithm>
#endif
INFER_NAMESPACE_STD_BEGIN
struct bool_ref {
bool_ref& operator=(bool x) {}
bool_ref& operator=(const bool_ref& x) {}
operator bool() const noexcept {}
void flip() noexcept {}
// not part of C++ std, but required for model implementation to compile
explicit bool_ref(bool x) {}
};
template <class T>
struct vector_ref {
typedef T& ref;
};
template <>
struct vector_ref<bool> {
typedef bool_ref ref;
};
int __infer_skip__get_int_val();
// this function will be treated as SKIP by infer
template <class T>
T* __infer_skip__get_nondet_val() {}
template <class T>
void __infer_deref_first_arg(T* ptr) INFER_MODEL_AS_DEREF_FIRST_ARG;
#define INFER_EXCLUDE_CONDITION(cond) \
if (cond) \
while (1)
// WARNING: do not add any new fields to std::vector model. sizeof(std::vector)
// = 24 !!
#ifdef INFER_USE_LIBCPP
// if using libcpp, then this template will have already a default _Allocator
// set (see include/c++/v1/iosfwd, where vector's declaration has a template
// with a default allocator<_Tp>, like the commented section below)
template <class _Tp, class _Allocator /* = allocator<_Tp> */>
#else
template <class _Tp, class _Allocator = allocator<_Tp>>
#endif
class vector {
public:
typedef vector __self;
typedef _Tp value_type;
typedef _Allocator allocator_type;
typedef allocator_traits<allocator_type> __alloc_traits;
typedef typename vector_ref<value_type>::ref reference;
typedef const value_type& const_reference;
typedef typename __alloc_traits::size_type size_type;
typedef typename __alloc_traits::difference_type difference_type;
typedef typename __alloc_traits::pointer pointer;
typedef typename __alloc_traits::const_pointer const_pointer;
typedef STD_ITER(pointer, vector) iterator;
typedef STD_ITER(const_pointer, vector) const_iterator;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
/* INFER SPECIFIC HELPER FUNCTIONS */
// required to keep sizeof(std::vector) same as in standard
value_type* beginPtr = nullptr;
value_type* endPtr = nullptr;
value_type* __ignore;
value_type* _get_begin() const {
// we have to resort to that hack so that infer can truly dereference
// beginPtr.
// Another way to model that would be 'auto tmp = *beginPtr' but that will
// trigger copy constructor that may not exist for value_type
__infer_deref_first_arg(beginPtr);
return beginPtr;
}
value_type* _get_end() const {
__infer_deref_first_arg(beginPtr);
__infer_deref_first_arg(endPtr);
return endPtr;
}
value_type* _get_index(size_type __n) const {
__infer_deref_first_arg(beginPtr);
return __infer_skip__get_nondet_val<value_type>();
}
void allocate(size_type size) {
// assume that allocation will produce non-empty vector regardless of the
// size
// if (size > 0) {
beginPtr = __infer_skip__get_nondet_val<value_type>();
endPtr = __infer_skip__get_nondet_val<value_type>();
//} else {
// deallocate();
//}
}
void deallocate() { beginPtr = nullptr; }
template <class Iter>
void allocate_iter(Iter begin, Iter end) {
// very simplified implementation to avoid false positives
allocate(1);
// infer doesn't understand iterators well which leads to skip functions
// they in effect lead to false positives in situations when empty vector
// is impossible. Implemenatation should look like this:
/*if (begin != end) {
allocate(1);
} else {
deallocate();
}*/
}
/* std::vector implementation */
vector() noexcept(is_nothrow_default_constructible<allocator_type>::value) {
deallocate();
}
explicit vector(const allocator_type& __a) noexcept { deallocate(); }
explicit vector(size_type __n);
// introduced in C++14
explicit vector(size_type __n, const allocator_type& __a);
vector(size_type __n, const_reference __x);
vector(size_type __n, const_reference __x, const allocator_type& __a);
template <class _ForwardIterator>
vector(_ForwardIterator __first,
typename enable_if<
is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value,
_ForwardIterator>::type __last);
template <class _ForwardIterator>
vector(_ForwardIterator __first,
_ForwardIterator __last,
const allocator_type& __a,
typename enable_if<is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value>::
type* = 0);
vector(initializer_list<value_type> __il);
vector(initializer_list<value_type> __il, const allocator_type& __a);
vector(const vector& __x);
vector(const vector& __x, const allocator_type& __a);
vector& operator=(const vector& __x);
vector(vector&& __x) noexcept;
vector(vector&& __x, const allocator_type& __a);
vector& operator=(vector&& __x) noexcept;
/*((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); */
vector& operator=(initializer_list<value_type> __il) {
assign(__il.begin(), __il.end());
return *this;
}
template <class _ForwardIterator>
typename enable_if<is_constructible<value_type,
typename iterator_traits<
_ForwardIterator>::reference>::value,
void>::type
assign(_ForwardIterator __first, _ForwardIterator __last);
void assign(size_type __n, const_reference __u);
void assign(initializer_list<value_type> __il) {
assign(__il.begin(), __il.end());
}
allocator_type get_allocator() const {}
iterator begin() noexcept;
const_iterator begin() const noexcept;
iterator end() noexcept;
const_iterator end() const noexcept;
reverse_iterator rbegin() noexcept { return reverse_iterator(end()); }
const_reverse_iterator rbegin() const noexcept {
return const_reverse_iterator(end());
}
reverse_iterator rend() noexcept { return reverse_iterator(begin()); }
const_reverse_iterator rend() const noexcept {
return const_reverse_iterator(begin());
}
const_iterator cbegin() const noexcept { return begin(); }
const_iterator cend() const noexcept { return end(); }
const_reverse_iterator crbegin() const noexcept { return rbegin(); }
const_reverse_iterator crend() const noexcept { return rend(); }
size_type size() const noexcept {
if (empty()) {
return 0;
}
return 10;
}
size_type capacity() const noexcept {}
bool empty() const noexcept {
if (beginPtr == nullptr) {
// prune branch where beginPtr is nullptr and endPtr isn't
INFER_EXCLUDE_CONDITION(endPtr != nullptr);
return true;
}
return false;
}
size_type max_size() const noexcept;
void reserve(size_type __n);
void shrink_to_fit() noexcept;
reference operator[](size_type __n);
const_reference operator[](size_type __n) const;
reference at(size_type __n);
const_reference at(size_type __n) const;
reference front() { return (reference)*_get_begin(); }
const_reference front() const { return (const_reference)*_get_begin(); }
reference back() {
size_t last_element = __infer_skip__get_int_val();
return (reference)*_get_index(last_element);
}
const_reference back() const {
size_t last_element = __infer_skip__get_int_val();
return (const_reference)*_get_index(last_element);
}
value_type* data() noexcept { return _get_begin(); }
const value_type* data() const noexcept { return _get_begin(); }
void push_back(const_reference __x);
void push_back(value_type&& __x);
template <class... _Args>
void emplace_back(_Args&&... __args);
void pop_back();
iterator insert(const_iterator __position, const_reference __x);
iterator insert(const_iterator __position, value_type&& __x);
template <class... _Args>
iterator emplace(const_iterator __position, _Args&&... __args);
iterator insert(const_iterator __position,
size_type __n,
const_reference __x);
template <class _ForwardIterator>
typename enable_if<is_constructible<value_type,
typename iterator_traits<
_ForwardIterator>::reference>::value,
iterator>::type
insert(const_iterator __position,
_ForwardIterator __first,
_ForwardIterator __last);
iterator insert(const_iterator __position,
initializer_list<value_type> __il) {
return insert(__position, __il.begin(), __il.end());
}
iterator erase(const_iterator __position);
iterator erase(const_iterator __first, const_iterator __last);
void clear() noexcept { deallocate(); }
void resize(size_type __sz);
void resize(size_type __sz, const_reference __x);
// NOTE c++17 adds noexcept
void swap(vector&);
private:
iterator __make_iter(pointer __p) noexcept;
const_iterator __make_iter(const_pointer __p) const noexcept;
};
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::size_type vector<_Tp, _Allocator>::max_size()
const noexcept {}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n) {
allocate(__n);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n, const allocator_type& __a) {
allocate(__n);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n, const_reference __x) {
allocate(__n);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n,
const_reference __x,
const allocator_type& __a) {
allocate(__n);
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
vector<_Tp, _Allocator>::vector(
_ForwardIterator __first,
typename enable_if<
is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value,
_ForwardIterator>::type __last) {
allocate_iter(__first, __last);
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
vector<_Tp, _Allocator>::vector(
_ForwardIterator __first,
_ForwardIterator __last,
const allocator_type& __a,
typename enable_if<is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value>::type*) {
allocate_iter(__first, __last);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(const vector& __x) {
beginPtr = __x.beginPtr;
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(const vector& __x, const allocator_type& __a) {
beginPtr = __x.beginPtr;
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(vector&& __x) noexcept {
beginPtr = __x.beginPtr;
__x.beginPtr = nullptr;
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(vector&& __x,
const allocator_type& __a) {
beginPtr = __x.beginPtr;
__x.beginPtr = nullptr;
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il) {
allocate_iter(__il.begin(), __il.end());
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il,
const allocator_type& __a) {
allocate_iter(__il.begin(), __il.end());
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>& vector<_Tp, _Allocator>::operator=(
vector&& __x) noexcept /*((__noexcept_move_assign_container<_Allocator,
__alloc_traits>::value)) */
{
beginPtr = __x.beginPtr;
__x.beginPtr = nullptr;
return *this;
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>& vector<_Tp, _Allocator>::operator=(
const vector& __x) {
beginPtr = __x.beginPtr;
return *this;
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if<is_constructible<_Tp,
typename iterator_traits<
_ForwardIterator>::reference>::value,
void>::type
vector<_Tp, _Allocator>::assign(_ForwardIterator __first,
_ForwardIterator __last) {
allocate_iter(__first, __last);
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::assign(size_type __n, const_reference __u) {
allocate(__n);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::__make_iter(pointer __p) noexcept {
return iterator(__p);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::__make_iter(const_pointer __p) const noexcept {
return const_iterator(__p);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::begin() noexcept {
return __make_iter(beginPtr);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::begin() const noexcept {
return __make_iter(beginPtr);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::end() noexcept {
return __make_iter(endPtr);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::end() const noexcept {
return __make_iter(endPtr);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>::
operator[](size_type __n) {
return (reference)*_get_index(__n);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_reference
vector<_Tp, _Allocator>::operator[](size_type __n) const {
return (const_reference)*_get_index(__n);
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>::at(
size_type __n) {
return (reference)*_get_index(__n);
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::const_reference vector<_Tp, _Allocator>::at(
size_type __n) const {
return (const_reference)*_get_index(__n);
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::reserve(size_type __n) {}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::shrink_to_fit() noexcept {}
template <class _Tp, class _Allocator>
inline void vector<_Tp, _Allocator>::push_back(const_reference __x) {
allocate(1);
}
template <class _Tp, class _Allocator>
inline void vector<_Tp, _Allocator>::push_back(value_type&& __x) {
allocate(1);
}
template <class _Tp, class _Allocator>
template <class... _Args>
inline void vector<_Tp, _Allocator>::emplace_back(_Args&&... __args) {
/* TODO - consider constructing the object
__alloc_traits::construct(this->__alloc(),
_VSTD::__to_raw_pointer(this->__end_),
_VSTD::forward<_Args>(__args)...);
*/
allocate(1);
}
template <class _Tp, class _Allocator>
inline void vector<_Tp, _Allocator>::pop_back() {
// dereference the object
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::erase(const_iterator __position) {
// dereference the object
/* TODO return __r;*/
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::erase(
const_iterator __first, const_iterator __last) {
// dereference the object
/* TODO return __r;*/
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert(
const_iterator __position, const_reference __x) {}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert(
const_iterator __position, value_type&& __x) {}
template <class _Tp, class _Allocator>
template <class... _Args>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::emplace(
const_iterator __position, _Args&&... __args) {
// TODO consider constructing the object
allocate(1);
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert(
const_iterator __position, size_type __n, const_reference __x) {
if (empty()) {
allocate(__n);
}
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if<is_constructible<_Tp,
typename iterator_traits<
_ForwardIterator>::reference>::value,
typename vector<_Tp, _Allocator>::iterator>::type
vector<_Tp, _Allocator>::insert(const_iterator __position,
_ForwardIterator __first,
_ForwardIterator __last) {
// TODO return __make_iter(__p);
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::resize(size_type __sz) {
allocate(__sz);
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::resize(size_type __sz, const_reference __x) {
allocate(__sz);
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::swap(vector& __x) {
value_type* tmp = __x.beginPtr;
__x.beginPtr = beginPtr;
beginPtr = tmp;
}
template <class _Allocator>
struct hash<vector<bool, _Allocator>>
: public unary_function<vector<bool, _Allocator>, size_t> {
size_t operator()(const vector<bool, _Allocator>& __vec) const noexcept {}
};
template <class _Tp, class _Allocator>
inline bool operator==(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
const typename vector<_Tp, _Allocator>::size_type __sz = __x.size();
return __sz == __y.size() && equal(__x.begin(), __x.end(), __y.begin());
}
template <class _Tp, class _Allocator>
inline bool operator!=(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return !(__x == __y);
}
template <class _Tp, class _Allocator>
inline bool operator<(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return lexicographical_compare(
__x.begin(), __x.end(), __y.begin(), __y.end());
}
template <class _Tp, class _Allocator>
inline bool operator>(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return __y < __x;
}
template <class _Tp, class _Allocator>
inline bool operator>=(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return !(__x < __y);
}
template <class _Tp, class _Allocator>
inline bool operator<=(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return !(__y < __x);
}
template <class _Tp, class _Allocator>
inline void swap(vector<_Tp, _Allocator>& __x, vector<_Tp, _Allocator>& __y) {
__x.swap(__y);
}
INFER_NAMESPACE_STD_END

@ -1,612 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <type_traits>
#include <climits>
#include <limits>
#include <initializer_list>
#include <stdexcept>
#include <memory>
#include <cstring>
#include <cassert>
#include <infer_model/common.h>
#include <infer_model/infer_traits.h>
#ifdef INFER_USE_LIBCPP
// libc++ vector header includes it, but it breaks
// compilation with stdlibc++ implementation
#include <algorithm>
#endif
extern "C" {
int __inferbo_min(int, int);
void __inferbo_set_size(void* p, int size);
}
bool __inferbo_empty(int* size) { return 1 - __inferbo_min(*size, 1); }
INFER_NAMESPACE_STD_BEGIN
struct bool_ref {
bool_ref& operator=(bool x) {}
bool_ref& operator=(const bool_ref& x) {}
operator bool() const noexcept {}
void flip() noexcept {}
// not part of C++ std, but required for model implementation to compile
explicit bool_ref(bool x) {}
};
template <class T>
struct vector_ref {
typedef T& ref;
};
template <>
struct vector_ref<bool> {
typedef bool_ref ref;
};
// this function will be treated as SKIP by infer
template <class T>
T* __infer_skip__get_nondet_val() {}
template <class T>
void __infer_deref_first_arg(T* ptr) INFER_MODEL_AS_DEREF_FIRST_ARG;
// WARNING: do not add any new fields to std::vector model. sizeof(std::vector)
// = 24 !!
#ifdef INFER_USE_LIBCPP
// if using libcpp, then this template will have already a default _Allocator
// set (see include/c++/v1/iosfwd, where vector's declaration has a template
// with a default allocator<_Tp>, like the commented section below)
template <class _Tp, class _Allocator /* = allocator<_Tp> */>
#else
template <class _Tp, class _Allocator = allocator<_Tp>>
#endif
class vector {
public:
typedef vector __self;
typedef _Tp value_type;
typedef _Allocator allocator_type;
typedef allocator_traits<allocator_type> __alloc_traits;
typedef typename vector_ref<value_type>::ref reference;
typedef const value_type& const_reference;
typedef typename __alloc_traits::size_type size_type;
typedef typename __alloc_traits::difference_type difference_type;
typedef typename __alloc_traits::pointer pointer;
typedef typename __alloc_traits::const_pointer const_pointer;
typedef STD_ITER(pointer, vector) iterator;
typedef STD_ITER(const_pointer, vector) const_iterator;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
/* INFER SPECIFIC HELPER FUNCTIONS */
// required to keep sizeof(std::vector) same as in standard
size_type infer_size = 0;
void* _ignore1;
void* _ignore2;
void access_at(size_type index) const {
int* dummy_array = (int*)malloc(sizeof(int) * infer_size);
int x = dummy_array[index];
}
value_type* get() const {
value_type* p = (value_type*)malloc(sizeof(value_type));
return p;
}
void allocate(size_type __n) { infer_size = __n; }
void deallocate() { infer_size = 0; }
template <class Iter>
void allocate_iter(Iter begin, Iter end) {
allocate(distance(begin, end));
}
/* std::vector implementation */
vector() noexcept(is_nothrow_default_constructible<allocator_type>::value) {
deallocate();
}
explicit vector(const allocator_type& __a) noexcept { deallocate(); }
explicit vector(size_type __n);
// introduced in C++14
explicit vector(size_type __n, const allocator_type& __a);
vector(size_type __n, const_reference __x);
vector(size_type __n, const_reference __x, const allocator_type& __a);
template <class _ForwardIterator>
vector(_ForwardIterator __first,
typename enable_if<
is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value,
_ForwardIterator>::type __last);
template <class _ForwardIterator>
vector(_ForwardIterator __first,
_ForwardIterator __last,
const allocator_type& __a,
typename enable_if<is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value>::
type* = 0);
vector(initializer_list<value_type> __il);
vector(initializer_list<value_type> __il, const allocator_type& __a);
vector(const vector& __x);
vector(const vector& __x, const allocator_type& __a);
vector& operator=(const vector& __x);
vector(vector&& __x) noexcept;
vector(vector&& __x, const allocator_type& __a);
vector& operator=(vector&& __x) noexcept;
/*((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); */
vector& operator=(initializer_list<value_type> __il) {
assign(__il.begin(), __il.end());
return *this;
}
template <class _ForwardIterator>
typename enable_if<is_constructible<value_type,
typename iterator_traits<
_ForwardIterator>::reference>::value,
void>::type
assign(_ForwardIterator __first, _ForwardIterator __last);
void assign(size_type __n, const_reference __u);
void assign(initializer_list<value_type> __il) {
assign(__il.begin(), __il.end());
}
allocator_type get_allocator() const {}
iterator begin() noexcept;
const_iterator begin() const noexcept;
iterator end() noexcept;
const_iterator end() const noexcept;
reverse_iterator rbegin() noexcept { return reverse_iterator(end()); }
const_reverse_iterator rbegin() const noexcept {
return const_reverse_iterator(end());
}
reverse_iterator rend() noexcept { return reverse_iterator(begin()); }
const_reverse_iterator rend() const noexcept {
return const_reverse_iterator(begin());
}
const_iterator cbegin() const noexcept { return begin(); }
const_iterator cend() const noexcept { return end(); }
const_reverse_iterator crbegin() const noexcept { return rbegin(); }
const_reverse_iterator crend() const noexcept { return rend(); }
size_type size() const noexcept { return infer_size; }
size_type capacity() const noexcept {}
bool empty() const noexcept { return __inferbo_empty((int*)&infer_size); }
size_type max_size() const noexcept;
void reserve(size_type __n);
void shrink_to_fit() noexcept;
reference operator[](size_type __n);
const_reference operator[](size_type __n) const;
reference at(size_type __n);
const_reference at(size_type __n) const;
reference front() { return (reference)*get(); }
const_reference front() const { return (const_reference)*get(); }
reference back() { return (reference)*get(); }
const_reference back() const { return (const_reference)*get(); }
value_type* data() noexcept {
value_type* p = get();
__inferbo_set_size((void*)&p, infer_size);
return p;
}
const value_type* data() const noexcept {
value_type* p = get();
__inferbo_set_size((void*)&p, infer_size);
return p;
}
void push_back(const_reference __x);
void push_back(value_type&& __x);
template <class... _Args>
void emplace_back(_Args&&... __args);
void pop_back();
iterator insert(const_iterator __position, const_reference __x);
iterator insert(const_iterator __position, value_type&& __x);
template <class... _Args>
iterator emplace(const_iterator __position, _Args&&... __args);
iterator insert(const_iterator __position,
size_type __n,
const_reference __x);
template <class _ForwardIterator>
typename enable_if<is_constructible<value_type,
typename iterator_traits<
_ForwardIterator>::reference>::value,
iterator>::type
insert(const_iterator __position,
_ForwardIterator __first,
_ForwardIterator __last);
iterator insert(const_iterator __position,
initializer_list<value_type> __il) {
return insert(__position, __il.begin(), __il.end());
}
iterator erase(const_iterator __position);
iterator erase(const_iterator __first, const_iterator __last);
void clear() noexcept { deallocate(); }
void resize(size_type __sz);
void resize(size_type __sz, const_reference __x);
// NOTE c++17 adds noexcept
void swap(vector&);
private:
iterator __make_iter(pointer __p) noexcept;
const_iterator __make_iter(const_pointer __p) const noexcept;
};
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::size_type vector<_Tp, _Allocator>::max_size()
const noexcept {}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n) {
allocate(__n);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n, const allocator_type& __a) {
allocate(__n);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n, const_reference __x) {
allocate(__n);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n,
const_reference __x,
const allocator_type& __a) {
allocate(__n);
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
vector<_Tp, _Allocator>::vector(
_ForwardIterator __first,
typename enable_if<
is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value,
_ForwardIterator>::type __last) {
allocate_iter(__first, __last);
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
vector<_Tp, _Allocator>::vector(
_ForwardIterator __first,
_ForwardIterator __last,
const allocator_type& __a,
typename enable_if<is_constructible<
value_type,
typename iterator_traits<_ForwardIterator>::reference>::value>::type*) {
allocate_iter(__first, __last);
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(const vector& __x) {
allocate(__x.size());
}
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(const vector& __x, const allocator_type& __a) {
allocate(__x.size());
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(vector&& __x) noexcept {
allocate(__x.size());
__x.clear();
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(vector&& __x,
const allocator_type& __a) {
allocate(__x.size());
__x.clear();
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il) {
allocate_iter(__il.begin(), __il.end());
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il,
const allocator_type& __a) {
allocate_iter(__il.begin(), __il.end());
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>& vector<_Tp, _Allocator>::operator=(
vector&& __x) noexcept /*((__noexcept_move_assign_container<_Allocator,
__alloc_traits>::value)) */
{
allocate(__x.size());
__x.clear();
return *this;
}
template <class _Tp, class _Allocator>
inline vector<_Tp, _Allocator>& vector<_Tp, _Allocator>::operator=(
const vector& __x) {
allocate(__x.size());
return *this;
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if<is_constructible<_Tp,
typename iterator_traits<
_ForwardIterator>::reference>::value,
void>::type
vector<_Tp, _Allocator>::assign(_ForwardIterator __first,
_ForwardIterator __last) {
allocate_iter(__first, __last);
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::assign(size_type __n, const_reference __u) {
allocate(__n);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::__make_iter(pointer __p) noexcept {
return iterator(__p);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::__make_iter(const_pointer __p) const noexcept {
return const_iterator(__p);
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::begin() noexcept {
return __make_iter(get());
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::begin() const noexcept {
return __make_iter(get());
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::end() noexcept {
return __make_iter(get());
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::end() const noexcept {
return __make_iter(get());
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>::
operator[](size_type __n) {
access_at(__n);
return (reference)*get();
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::const_reference
vector<_Tp, _Allocator>::operator[](size_type __n) const {
access_at(__n);
return (const_reference)*get();
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>::at(
size_type __n) {
access_at(__n);
return (reference)*get();
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::const_reference vector<_Tp, _Allocator>::at(
size_type __n) const {
access_at(__n);
return (const_reference)*get();
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::reserve(size_type __n) {}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::shrink_to_fit() noexcept {}
template <class _Tp, class _Allocator>
inline void vector<_Tp, _Allocator>::push_back(const_reference __x) {
infer_size++;
}
template <class _Tp, class _Allocator>
inline void vector<_Tp, _Allocator>::push_back(value_type&& __x) {
infer_size++;
}
template <class _Tp, class _Allocator>
template <class... _Args>
inline void vector<_Tp, _Allocator>::emplace_back(_Args&&... __args) {
infer_size++;
}
template <class _Tp, class _Allocator>
inline void vector<_Tp, _Allocator>::pop_back() {
infer_size--;
}
template <class _Tp, class _Allocator>
inline typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::erase(const_iterator __position) {
infer_size--;
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::erase(
const_iterator __first, const_iterator __last) {
infer_size -= distance(__first, __last);
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert(
const_iterator __position, const_reference __x) {
infer_size++;
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert(
const_iterator __position, value_type&& __x) {
infer_size++;
}
template <class _Tp, class _Allocator>
template <class... _Args>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::emplace(
const_iterator __position, _Args&&... __args) {
infer_size++;
}
template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert(
const_iterator __position, size_type __n, const_reference __x) {
infer_size += __n;
}
template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if<is_constructible<_Tp,
typename iterator_traits<
_ForwardIterator>::reference>::value,
typename vector<_Tp, _Allocator>::iterator>::type
vector<_Tp, _Allocator>::insert(const_iterator __position,
_ForwardIterator __first,
_ForwardIterator __last) {
infer_size += distance(__first, __last);
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::resize(size_type __sz) {
infer_size = __sz;
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::resize(size_type __sz, const_reference __x) {
infer_size = __sz;
}
template <class _Tp, class _Allocator>
void vector<_Tp, _Allocator>::swap(vector& __x) {
auto tmp = __x.size();
__x.resize(infer_size);
infer_size = tmp;
}
template <class _Allocator>
struct hash<vector<bool, _Allocator>>
: public unary_function<vector<bool, _Allocator>, size_t> {
size_t operator()(const vector<bool, _Allocator>& __vec) const noexcept {}
};
template <class _Tp, class _Allocator>
inline bool operator==(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
const typename vector<_Tp, _Allocator>::size_type __sz = __x.size();
return __sz == __y.size() && equal(__x.begin(), __x.end(), __y.begin());
}
template <class _Tp, class _Allocator>
inline bool operator!=(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return !(__x == __y);
}
template <class _Tp, class _Allocator>
inline bool operator<(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return lexicographical_compare(
__x.begin(), __x.end(), __y.begin(), __y.end());
}
template <class _Tp, class _Allocator>
inline bool operator>(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return __y < __x;
}
template <class _Tp, class _Allocator>
inline bool operator>=(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return !(__x < __y);
}
template <class _Tp, class _Allocator>
inline bool operator<=(const vector<_Tp, _Allocator>& __x,
const vector<_Tp, _Allocator>& __y) {
return !(__y < __x);
}
template <class _Tp, class _Allocator>
inline void swap(vector<_Tp, _Allocator>& __x, vector<_Tp, _Allocator>& __y) {
__x.swap(__y);
}
INFER_NAMESPACE_STD_END

@ -1,174 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <infer_model/common.h>
#include <infer_model/infer_traits.h>
unsigned long int __infer_nondet_unsigned_long_int();
INFER_NAMESPACE_STD_BEGIN
// forward declaration because it is used here
template <class T>
class shared_ptr;
// Ideally: : public std__weak_ptr<T>
// use inheritance to avoid compilation errors when using
// methods / non-member functions that are not modeled
// Currently not inherited because it leads to Symexec_memory_error
template <class T>
class weak_ptr {
template <class>
friend class weak_ptr;
// WARNING: if sizeof(weak_ptr) becomes different than 16, it may
// lead to compilation errors
T* ptr;
void* __ignore;
public:
// Conversion constructors to allow implicit conversions.
// it's here purely to avoid compilation errors
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
weak_ptr(const std__weak_ptr<Y>& r) {}
// constructors:
constexpr weak_ptr() noexcept { ptr = nullptr; }
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
weak_ptr(const shared_ptr<Y>& r) noexcept {
ptr = r.get();
}
weak_ptr(const weak_ptr& r) noexcept { ptr = r.ptr; }
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
weak_ptr(const weak_ptr<Y>& r) noexcept {
ptr = r.ptr;
}
weak_ptr(weak_ptr&& r) noexcept {
ptr = r.ptr;
r.ptr = nullptr;
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
weak_ptr(weak_ptr<Y>&& r) noexcept {
ptr = r.ptr;
r.ptr = nullptr;
}
// destructor:
~weak_ptr() { ptr = nullptr; }
// assignment:
weak_ptr& operator=(const weak_ptr& r) noexcept {
// weak_ptr<T>(r).swap(*this);
ptr = r.ptr;
return *this;
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
weak_ptr& operator=(const weak_ptr<Y>& r) noexcept {
// weak_ptr<T>(r).swap(*this);
ptr = r.ptr;
return *this;
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
weak_ptr& operator=(const shared_ptr<Y>& r) noexcept {
// weak_ptr<T>(r).swap(*this);
ptr = r.get();
return *this;
}
weak_ptr& operator=(weak_ptr&& r) noexcept {
// shared_ptr<T>(std::move(r)).swap(*this);
ptr = r.ptr;
r.ptr = nullptr;
return *this;
}
template <class Y,
typename = typename enable_if<is_convertible<Y*, T*>::value>::type>
weak_ptr& operator=(weak_ptr<Y>&& r) {
// weak_ptr<T>(std::move(r)).swap(*this);
ptr = r.ptr;
r.ptr = nullptr;
return *this;
}
// modifiers:
void swap(weak_ptr& r) noexcept {
T* tmp = ptr;
ptr = r.ptr;
r.ptr = tmp;
}
void reset() noexcept {
// weak_ptr().swap(*this);
ptr = nullptr;
}
// observers:
long use_count() const noexcept {
if (ptr) {
return __infer_nondet_unsigned_long_int();
}
return 0;
}
bool expired() const noexcept { return use_count() <= 0; }
shared_ptr<T> lock() const noexcept {
if (use_count() > 0) {
return shared_ptr<T>(ptr);
}
return shared_ptr<T>();
}
template <class U>
bool owner_before(shared_ptr<U> const& b) const {
return true; /* FIXME - use non-det*/
}
template <class U>
bool owner_before(weak_ptr<U> const& b) const {
return true; /* FIXME - use non-det */
}
};
template <class T>
struct owner_less;
template <class T>
struct owner_less<weak_ptr<T>>
: binary_function<weak_ptr<T>, weak_ptr<T>, bool> {
typedef bool result_type;
bool operator()(weak_ptr<T> const& x, weak_ptr<T> const& y) const {
return x.owner_before(y);
}
bool operator()(shared_ptr<T> const& x, weak_ptr<T> const& y) const {
return x.owner_before(y);
}
bool operator()(weak_ptr<T> const& x, shared_ptr<T> const& y) const {
return x.owner_before(y);
}
};
INFER_NAMESPACE_STD_END

@ -1,30 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <cstdlib>
#include <cstdio>
// NOTE this header shouldn't be translated by infer - it's here to disallow
// running binaries built with infer headers
namespace infer_model {
// code compiled with infer headers is not supposed to be executed
struct AbortWhenRun {
AbortWhenRun() { __infer_skip__(); }
// will be skipped by analyzer
void __infer_skip__() {
fprintf(stderr,
"!!! This program must not be run !!!\n"
"This code was compiled to be analyzed by Infer.\n"
"To run this program, recompile it without Infer.\n");
std::abort();
}
};
static AbortWhenRun a{};
} // namespace infer_model

@ -1,7 +0,0 @@
#include <infer_model/portability.h>
#ifdef INFER_CPP11_ON
# include <infer_model/iostream.h>
#else
# include_next <iostream>
#endif

@ -1,16 +0,0 @@
#include <infer_model/portability.h>
#ifdef INFER_CPP11_ON
#include <infer_model/begin_name_override.inc>
#include_next <memory>
#include <infer_model/end_name_override.inc>
#include<infer_model/unique_ptr.h>
#include<infer_model/shared_ptr.h>
#else
// don't model memory for pre-C++11 code
#include_next <memory>
#endif

@ -1,17 +0,0 @@
#include <infer_model/portability.h>
#ifdef INFER_CPP11_ON
#ifdef __INFER_BUFFEROVERRUN
// Separate model for bufferoverrun checker
// TODO t17807570: move to a separate directory
#include<infer_model/vector_bufferoverrun.h>
#else
#include<infer_model/vector.h>
#endif
#else
// don't model std::vector pre-c++11 to
// simplify implementation
#include_next <vector>
#endif

@ -7,7 +7,7 @@ SOURCES=$(wildcard *.cpp)
CSOURCES=$(wildcard c_src/*.c)
OBJECTS=$(patsubst %.c,%_cxx.o, $(CSOURCES)) $(patsubst %.cpp,%.o, $(SOURCES))
CXX=clang++
CXXFLAGS=-c -w -std=c++11 -isystem../include
CXXFLAGS=-c -w -std=c++11
all: $(OBJECTS)

@ -420,12 +420,6 @@ let models_src_dir =
(* Normalize the path *)
let relative_cpp_extra_include_dir = "cpp" ^/ "include"
let cpp_extra_include_dir = models_src_dir ^/ relative_cpp_extra_include_dir
let relative_cpp_models_dir = relative_cpp_extra_include_dir ^/ "infer_model"
let linters_def_dir = lib_dir ^/ "linter_rules"
let linters_def_default_file = linters_def_dir ^/ "linters.al"
@ -1086,25 +1080,12 @@ and current_to_previous_script =
we are on the current version already."
and cxx_infer_headers, siof_check_iostreams =
let siof_check_iostreams =
CLOpt.mk_bool ~long:"siof-check-iostreams"
~in_help:InferCommand.[(Analyze, manual_siof)]
"Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to \
assume they are always initialized when $(b,--cxx-infer-headers) is false to avoid false \
positives due to lack of models of the proper initialization of io streams. However, if \
your program compiles against a recent libstdc++ then the infer models are not needed for \
precision and it is safe to turn this option on."
in
let cxx_infer_headers =
CLOpt.mk_bool_group ~long:"cxx-infer-headers" ~default:false
~in_help:InferCommand.[(Capture, manual_clang)]
"Include C++ header models during compilation. Infer swaps some C++ headers for its own in \
order to get a better model of, eg, the standard library. This can sometimes cause \
compilation failures."
[siof_check_iostreams] []
in
(cxx_infer_headers, siof_check_iostreams)
and siof_check_iostreams =
CLOpt.mk_bool ~long:"siof-check-iostreams"
~in_help:InferCommand.[(Analyze, manual_siof)]
"Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to \
assume they are always initialized to avoid false positives. However, if your program \
compiles against a recent libstdc++ then it is safe to turn this option on."
and cxx_scope_guards =
@ -2491,6 +2472,10 @@ and _ =
and () = CLOpt.mk_set ~parse_mode:CLOpt.Javac version ~deprecated:["version"] ~long:"" `Javac ""
and (_ : bool ref) =
CLOpt.mk_bool ~long:"" ~deprecated:["-cxx-infer-headers"] "This option doesn't exist anymore."
(** Parse Command Line Args *)
let inferconfig_file =
@ -2821,8 +2806,6 @@ and current_to_previous_script = !current_to_previous_script
and cxx = !cxx
and cxx_infer_headers = !cxx_infer_headers
and cxx_scope_guards = !cxx_scope_guards
and debug_level_analysis = !debug_level_analysis

@ -75,8 +75,6 @@ val classpath : string option
val costs_report_json : string
val cpp_extra_include_dir : string
val csl_analysis : bool
val default_failure_name : string
@ -151,8 +149,6 @@ val property_attributes : string
val racerd_issues_dir_name : string
val relative_cpp_models_dir : string
val relative_path_backtrack : int
val report : bool
@ -314,8 +310,6 @@ val current_to_previous_script : string option
val cxx : bool
val cxx_infer_headers : bool
val cxx_scope_guards : Yojson.Basic.t
val debug_exceptions : bool

@ -118,15 +118,6 @@ let is_infer_model source_file =
true
(** Returns true if the file is a C++ model *)
let is_cpp_model file =
match file with
| RelativeInferModel path ->
String.is_prefix ~prefix:Config.relative_cpp_models_dir path
| _ ->
false
let is_under_project_root = function
| Invalid {ml_source_file} ->
L.(die InternalError) "cannot be called with Invalid source file from %s" ml_source_file

@ -41,9 +41,6 @@ val create : ?warn_on_error:bool -> string -> t
WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for
the given path (e.g. if it does not exist). *)
val is_cpp_model : t -> bool
(** Returns true if the file is a C++ model *)
val is_infer_model : t -> bool
val is_under_project_root : t -> bool

@ -49,8 +49,7 @@ module ConditionTrace = struct
let pp_description : F.formatter -> t -> unit =
fun fmt ct ->
match ct.cond_trace with
| Inter {callee_pname}
when Config.bo_debug >= 1 || not (SourceFile.is_cpp_model ct.issue_location.Location.file) ->
| Inter {callee_pname} ->
F.fprintf fmt " by call to %a " MF.pp_monospaced (Typ.Procname.to_string callee_pname)
| _ ->
()

@ -246,10 +246,6 @@ let with_plugin_args args =
[]
|> (* -cc1 has to be the first argument or clang will think it runs in driver mode *)
argv_cons "-cc1"
|> (* It's important to place this option before other -isystem options. *)
argv_do_if
Config.(cxx_infer_headers && (biabduction || bufferoverrun || siof))
(List.rev_append ["-isystem"; Config.cpp_extra_include_dir])
|> List.rev_append
[ "-load"
; plugin_path

@ -66,12 +66,8 @@ let should_translate translation_unit (loc_start, loc_end) decl_trans_context ~t
map_file_of source_file_in_project loc_end || map_file_of source_file_in_project loc_start
in
let translate_on_demand = translate_when_used || file_in_project || Config.models_mode in
let file_in_models =
map_file_of SourceFile.is_cpp_model loc_end || map_file_of SourceFile.is_cpp_model loc_start
in
map_file_of equal_current_source loc_end
|| map_file_of equal_current_source loc_start
|| file_in_models
|| (Config.cxx && map_file_of equal_header_of_current_source loc_start)
|| Config.cxx
&& decl_trans_context = `Translation

@ -22,7 +22,7 @@ CLEAN_EXTRA = $(DOT_FILES) $(foreach source,$(SOURCES),infer-out-$(basename $(no
include $(TESTS_DIR)/clang-frontend.make
INFER_OPTIONS = capture --frontend-tests --skip-translation-headers exclude_dir --cxx-infer-headers
INFER_OPTIONS = capture --frontend-tests --skip-translation-headers exclude_dir
capture: $(DOT_FILES)

@ -1,107 +1,5 @@
/* @generated */
digraph cfg {
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ;
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled]
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled]
@ -113,14 +11,14 @@ digraph cfg {
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ;
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:int* \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:std::shared_ptr<int> \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:int**) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr<int> [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:std::shared_ptr<int>*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:int**) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:std::shared_ptr<int>); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:std::shared_ptr<int>*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
@ -170,611 +68,4 @@ digraph cfg {
"used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base<long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long>* desired:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base<long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long>* [line 165, column 46]\n n$2=*&desired:long [line 165, column 61]\n *n$1._wrapped_value:long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base<unsigned long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long>* desired:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base<unsigned long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long>* [line 165, column 46]\n n$2=*&desired:unsigned long [line 165, column 61]\n *n$1._wrapped_value:unsigned long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base<short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<short>* desired:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base<short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<short>* [line 165, column 46]\n n$2=*&desired:short [line 165, column 61]\n *n$1._wrapped_value:short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base<unsigned short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned short>* desired:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base<unsigned short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned short>* [line 165, column 46]\n n$2=*&desired:unsigned short [line 165, column 61]\n *n$1._wrapped_value:unsigned short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base<long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long long>* desired:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base<long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long long>* [line 165, column 46]\n n$2=*&desired:long long [line 165, column 61]\n *n$1._wrapped_value:long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base<signed char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<signed char>* desired:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base<signed char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<signed char>* [line 165, column 46]\n n$2=*&desired:signed char [line 165, column 61]\n *n$1._wrapped_value:signed char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base<unsigned long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long long>* desired:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base<unsigned long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long long>* [line 165, column 46]\n n$2=*&desired:unsigned long long [line 165, column 61]\n *n$1._wrapped_value:unsigned long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base<unsigned char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned char>* desired:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base<unsigned char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned char>* [line 165, column 46]\n n$2=*&desired:unsigned char [line 165, column 61]\n *n$1._wrapped_value:unsigned char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base<int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<int>* desired:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base<int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<int>* [line 165, column 46]\n n$2=*&desired:int [line 165, column 61]\n *n$1._wrapped_value:int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base<unsigned int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned int>* desired:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base<unsigned int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned int>* [line 165, column 46]\n n$2=*&desired:unsigned int [line 165, column 61]\n *n$1._wrapped_value:unsigned int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned short>* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned short>*,n$2:unsigned short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long long>* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long long>*,n$2:unsigned long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral<short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<short>* d:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral<short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<short>* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<short>*,n$2:short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral<signed char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral<signed char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<signed char>* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<signed char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<signed char>*,n$2:signed char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral<long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral<long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long long>* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long long>*,n$2:long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral<long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long>* d:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral<long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long>* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long>*,n$2:long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long>* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long>*,n$2:unsigned long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned int>* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned int>*,n$2:unsigned int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned char>* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned char>*,n$2:unsigned char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral<int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<int>* d:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral<int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<int>* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<int>*,n$2:int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic<unsigned short>::atomic\nFormals: this:std::atomic<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic<unsigned short>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned short>* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral(n$1:std::atomic<unsigned short>*,n$2:unsigned short) [line 406, column 50]\n NULLIFY(&d); [line 406, column 50]\n NULLIFY(&this); [line 406, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 406, column 50]\n APPLY_ABSTRACTION; [line 406, column 50]\n " shape="box"]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 470, column 50]\n NULLIFY(&d); [line 470, column 50]\n NULLIFY(&this); [line 470, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 470, column 50]\n APPLY_ABSTRACTION; [line 470, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic<unsigned long>::atomic\nFormals: this:std::atomic<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic<unsigned long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long>* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral(n$1:std::atomic<unsigned long>*,n$2:unsigned long) [line 442, column 50]\n NULLIFY(&d); [line 442, column 50]\n NULLIFY(&this); [line 442, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 442, column 50]\n APPLY_ABSTRACTION; [line 442, column 50]\n " shape="box"]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic<short>::atomic\nFormals: this:std::atomic<short>* d:short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic<short>::atomic \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<short>* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral<short>::__infer_atomic_integral(n$1:std::atomic<short>*,n$2:short) [line 397, column 50]\n NULLIFY(&d); [line 397, column 50]\n NULLIFY(&this); [line 397, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 397, column 50]\n APPLY_ABSTRACTION; [line 397, column 50]\n " shape="box"]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic<long>::atomic\nFormals: this:std::atomic<long>* d:long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic<long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long>* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral<long>::__infer_atomic_integral(n$1:std::atomic<long>*,n$2:long) [line 433, column 50]\n NULLIFY(&d); [line 433, column 50]\n NULLIFY(&this); [line 433, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 433, column 50]\n APPLY_ABSTRACTION; [line 433, column 50]\n " shape="box"]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic<int>::atomic\nFormals: this:std::atomic<int>* d:int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic<int>::atomic \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<int>* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral<int>::__infer_atomic_integral(n$1:std::atomic<int>*,n$2:int) [line 415, column 50]\n NULLIFY(&d); [line 415, column 50]\n NULLIFY(&this); [line 415, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 415, column 50]\n APPLY_ABSTRACTION; [line 415, column 50]\n " shape="box"]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic<unsigned char>::atomic\nFormals: this:std::atomic<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic<unsigned char>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned char>* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral(n$1:std::atomic<unsigned char>*,n$2:unsigned char) [line 388, column 50]\n NULLIFY(&d); [line 388, column 50]\n NULLIFY(&this); [line 388, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 388, column 50]\n APPLY_ABSTRACTION; [line 388, column 50]\n " shape="box"]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 479, column 50]\n NULLIFY(&d); [line 479, column 50]\n NULLIFY(&this); [line 479, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 479, column 50]\n APPLY_ABSTRACTION; [line 479, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic<signed char>::atomic\nFormals: this:std::atomic<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic<signed char>::atomic \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<signed char>* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral<signed char>::__infer_atomic_integral(n$1:std::atomic<signed char>*,n$2:signed char) [line 379, column 50]\n NULLIFY(&d); [line 379, column 50]\n NULLIFY(&this); [line 379, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 379, column 50]\n APPLY_ABSTRACTION; [line 379, column 50]\n " shape="box"]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 370, column 50]\n NULLIFY(&d); [line 370, column 50]\n NULLIFY(&this); [line 370, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 370, column 50]\n APPLY_ABSTRACTION; [line 370, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 488, column 50]\n NULLIFY(&d); [line 488, column 50]\n NULLIFY(&this); [line 488, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 488, column 50]\n APPLY_ABSTRACTION; [line 488, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic<unsigned int>::atomic\nFormals: this:std::atomic<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic<unsigned int>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned int>* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral(n$1:std::atomic<unsigned int>*,n$2:unsigned int) [line 424, column 50]\n NULLIFY(&d); [line 424, column 50]\n NULLIFY(&this); [line 424, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 424, column 50]\n APPLY_ABSTRACTION; [line 424, column 50]\n " shape="box"]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic<unsigned long long>::atomic\nFormals: this:std::atomic<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic<unsigned long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long long>* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral(n$1:std::atomic<unsigned long long>*,n$2:unsigned long long) [line 461, column 50]\n NULLIFY(&d); [line 461, column 50]\n NULLIFY(&this); [line 461, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 461, column 50]\n APPLY_ABSTRACTION; [line 461, column 50]\n " shape="box"]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic<long long>::atomic\nFormals: this:std::atomic<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic<long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long long>* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral<long long>::__infer_atomic_integral(n$1:std::atomic<long long>*,n$2:long long) [line 451, column 50]\n NULLIFY(&d); [line 451, column 50]\n NULLIFY(&this); [line 451, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 451, column 50]\n APPLY_ABSTRACTION; [line 451, column 50]\n " shape="box"]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 944, column 5]\n *n$0.a:_Bool=0 [line 944, column 5]\n NULLIFY(&this); [line 944, column 5]\n EXIT_SCOPE(n$0,this); [line 944, column 5]\n APPLY_ABSTRACTION; [line 944, column 5]\n " shape="box"]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 946, column 65]\n *n$0.a:_Bool=0 [line 946, column 65]\n NULLIFY(&this); [line 946, column 65]\n EXIT_SCOPE(n$0,this); [line 946, column 65]\n APPLY_ABSTRACTION; [line 946, column 65]\n " shape="box"]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 935, column 12]\n *&return:_Bool=n$0 [line 935, column 5]\n NULLIFY(&ret); [line 935, column 5]\n EXIT_SCOPE(n$0,ret); [line 935, column 5]\n APPLY_ABSTRACTION; [line 935, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 934, column 5]\n *n$1.a:_Bool=1 [line 934, column 5]\n NULLIFY(&this); [line 934, column 5]\n EXIT_SCOPE(n$1,this); [line 934, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 933, column 5]\n n$2=*&this:std::atomic_flag* [line 933, column 16]\n n$3=*n$2.a:_Bool [line 933, column 16]\n *&ret:_Bool=n$3 [line 933, column 5]\n EXIT_SCOPE(n$2,n$3); [line 933, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 940, column 12]\n *&return:_Bool=n$0 [line 940, column 5]\n NULLIFY(&ret); [line 940, column 5]\n EXIT_SCOPE(n$0,ret); [line 940, column 5]\n APPLY_ABSTRACTION; [line 940, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 939, column 5]\n *n$1.a:_Bool=1 [line 939, column 5]\n NULLIFY(&this); [line 939, column 5]\n EXIT_SCOPE(n$1,this); [line 939, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 938, column 5]\n n$2=*&this:std::atomic_flag* [line 938, column 16]\n n$3=*n$2.a:_Bool [line 938, column 16]\n *&ret:_Bool=n$3 [line 938, column 5]\n EXIT_SCOPE(n$2,n$3); [line 938, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" [label="1: Start std::atomic_flag::atomic_flag\nFormals: this:std::atomic_flag* i:_Bool\nLocals: \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" [label="2: Exit std::atomic_flag::atomic_flag \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" [label="3: Constructor Init \n n$1=*&this:std::atomic_flag* [line 927, column 44]\n n$2=*&i:_Bool [line 927, column 46]\n *n$1.a:_Bool=n$2 [line 927, column 44]\n NULLIFY(&this); [line 927, column 44]\n NULLIFY(&i); [line 927, column 44]\n EXIT_SCOPE(n$1,n$2,this,i); [line 927, column 44]\n APPLY_ABSTRACTION; [line 927, column 44]\n " shape="box"]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 65, column 6]\n n$1=*&value:void* [line 65, column 37]\n *n$0:void const *=n$1 [line 65, column 5]\n NULLIFY(&value); [line 65, column 5]\n NULLIFY(&self); [line 65, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 65, column 5]\n APPLY_ABSTRACTION; [line 65, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 53, column 6]\n n$1=*&value:int [line 53, column 13]\n *n$0:void const *=n$1 [line 53, column 5]\n NULLIFY(&value); [line 53, column 5]\n NULLIFY(&self); [line 53, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 53, column 5]\n APPLY_ABSTRACTION; [line 53, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr<int>::reset<int,_void>\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr<int>::reset<int,_void> \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 236, column 15]\n n$2=*&p:int* [line 236, column 42]\n n$3=_fun_std::shared_ptr<int>::model_set(n$1:void const **,n$2:void*) [line 236, column 5]\n NULLIFY(&p); [line 236, column 5]\n NULLIFY(&this); [line 236, column 5]\n EXIT_SCOPE(n$1,n$2,n$3,p,this); [line 236, column 5]\n APPLY_ABSTRACTION; [line 236, column 5]\n " shape="box"]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr<int>::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr<int>::shared_ptr \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr<int>::model_set(n$1:void const **,null:int) [line 97, column 5]\n NULLIFY(&this); [line 97, column 5]\n EXIT_SCOPE(n$1,n$2,this); [line 97, column 5]\n APPLY_ABSTRACTION; [line 97, column 5]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" [label="4: Constructor Init \n n$3=*&this:int** [line 97, column 42]\n n$4=_fun_std::std__shared_ptr<int>::std__shared_ptr(n$3:int**) [line 96, column 13]\n EXIT_SCOPE(n$3,n$4); [line 96, column 13]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" [label="3: Destruction(fields) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::std__shared_ptr<int>::__infer_inner_destructor_~std__shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr<int>::reset<int,_void> \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr<int>::reset<int,_void>(n$4:int**,null:int*) [line 178, column 19]\n EXIT_SCOPE(_,n$4,n$6); [line 178, column 19]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr<int>::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr<int>::~shared_ptr \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" [label="3: Destruction(virtual base) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ;
}

@ -1,107 +1,5 @@
/* @generated */
digraph cfg {
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ;
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled]
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled]
@ -113,14 +11,14 @@ digraph cfg {
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ;
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:int* \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:std::shared_ptr<int> \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:int**) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr<int> [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:std::shared_ptr<int>*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:int**) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:std::shared_ptr<int>); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:std::shared_ptr<int>*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
@ -170,611 +68,4 @@ digraph cfg {
"used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base<long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long>* desired:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base<long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long>* [line 165, column 46]\n n$2=*&desired:long [line 165, column 61]\n *n$1._wrapped_value:long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base<unsigned long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long>* desired:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base<unsigned long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long>* [line 165, column 46]\n n$2=*&desired:unsigned long [line 165, column 61]\n *n$1._wrapped_value:unsigned long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base<short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<short>* desired:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base<short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<short>* [line 165, column 46]\n n$2=*&desired:short [line 165, column 61]\n *n$1._wrapped_value:short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base<unsigned short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned short>* desired:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base<unsigned short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned short>* [line 165, column 46]\n n$2=*&desired:unsigned short [line 165, column 61]\n *n$1._wrapped_value:unsigned short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base<long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long long>* desired:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base<long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long long>* [line 165, column 46]\n n$2=*&desired:long long [line 165, column 61]\n *n$1._wrapped_value:long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base<signed char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<signed char>* desired:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base<signed char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<signed char>* [line 165, column 46]\n n$2=*&desired:signed char [line 165, column 61]\n *n$1._wrapped_value:signed char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base<unsigned long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long long>* desired:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base<unsigned long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long long>* [line 165, column 46]\n n$2=*&desired:unsigned long long [line 165, column 61]\n *n$1._wrapped_value:unsigned long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base<unsigned char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned char>* desired:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base<unsigned char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned char>* [line 165, column 46]\n n$2=*&desired:unsigned char [line 165, column 61]\n *n$1._wrapped_value:unsigned char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base<int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<int>* desired:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base<int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<int>* [line 165, column 46]\n n$2=*&desired:int [line 165, column 61]\n *n$1._wrapped_value:int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base<unsigned int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned int>* desired:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base<unsigned int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned int>* [line 165, column 46]\n n$2=*&desired:unsigned int [line 165, column 61]\n *n$1._wrapped_value:unsigned int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned short>* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned short>*,n$2:unsigned short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long long>* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long long>*,n$2:unsigned long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral<short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<short>* d:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral<short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<short>* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<short>*,n$2:short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral<signed char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral<signed char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<signed char>* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<signed char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<signed char>*,n$2:signed char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral<long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral<long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long long>* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long long>*,n$2:long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral<long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long>* d:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral<long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long>* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long>*,n$2:long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long>* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long>*,n$2:unsigned long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned int>* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned int>*,n$2:unsigned int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned char>* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned char>*,n$2:unsigned char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral<int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<int>* d:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral<int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<int>* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<int>*,n$2:int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic<unsigned short>::atomic\nFormals: this:std::atomic<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic<unsigned short>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned short>* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral(n$1:std::atomic<unsigned short>*,n$2:unsigned short) [line 406, column 50]\n NULLIFY(&d); [line 406, column 50]\n NULLIFY(&this); [line 406, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 406, column 50]\n APPLY_ABSTRACTION; [line 406, column 50]\n " shape="box"]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 470, column 50]\n NULLIFY(&d); [line 470, column 50]\n NULLIFY(&this); [line 470, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 470, column 50]\n APPLY_ABSTRACTION; [line 470, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic<unsigned long>::atomic\nFormals: this:std::atomic<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic<unsigned long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long>* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral(n$1:std::atomic<unsigned long>*,n$2:unsigned long) [line 442, column 50]\n NULLIFY(&d); [line 442, column 50]\n NULLIFY(&this); [line 442, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 442, column 50]\n APPLY_ABSTRACTION; [line 442, column 50]\n " shape="box"]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic<short>::atomic\nFormals: this:std::atomic<short>* d:short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic<short>::atomic \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<short>* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral<short>::__infer_atomic_integral(n$1:std::atomic<short>*,n$2:short) [line 397, column 50]\n NULLIFY(&d); [line 397, column 50]\n NULLIFY(&this); [line 397, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 397, column 50]\n APPLY_ABSTRACTION; [line 397, column 50]\n " shape="box"]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic<long>::atomic\nFormals: this:std::atomic<long>* d:long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic<long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long>* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral<long>::__infer_atomic_integral(n$1:std::atomic<long>*,n$2:long) [line 433, column 50]\n NULLIFY(&d); [line 433, column 50]\n NULLIFY(&this); [line 433, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 433, column 50]\n APPLY_ABSTRACTION; [line 433, column 50]\n " shape="box"]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic<int>::atomic\nFormals: this:std::atomic<int>* d:int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic<int>::atomic \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<int>* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral<int>::__infer_atomic_integral(n$1:std::atomic<int>*,n$2:int) [line 415, column 50]\n NULLIFY(&d); [line 415, column 50]\n NULLIFY(&this); [line 415, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 415, column 50]\n APPLY_ABSTRACTION; [line 415, column 50]\n " shape="box"]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic<unsigned char>::atomic\nFormals: this:std::atomic<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic<unsigned char>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned char>* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral(n$1:std::atomic<unsigned char>*,n$2:unsigned char) [line 388, column 50]\n NULLIFY(&d); [line 388, column 50]\n NULLIFY(&this); [line 388, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 388, column 50]\n APPLY_ABSTRACTION; [line 388, column 50]\n " shape="box"]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 479, column 50]\n NULLIFY(&d); [line 479, column 50]\n NULLIFY(&this); [line 479, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 479, column 50]\n APPLY_ABSTRACTION; [line 479, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic<signed char>::atomic\nFormals: this:std::atomic<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic<signed char>::atomic \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<signed char>* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral<signed char>::__infer_atomic_integral(n$1:std::atomic<signed char>*,n$2:signed char) [line 379, column 50]\n NULLIFY(&d); [line 379, column 50]\n NULLIFY(&this); [line 379, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 379, column 50]\n APPLY_ABSTRACTION; [line 379, column 50]\n " shape="box"]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 370, column 50]\n NULLIFY(&d); [line 370, column 50]\n NULLIFY(&this); [line 370, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 370, column 50]\n APPLY_ABSTRACTION; [line 370, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 488, column 50]\n NULLIFY(&d); [line 488, column 50]\n NULLIFY(&this); [line 488, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 488, column 50]\n APPLY_ABSTRACTION; [line 488, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic<unsigned int>::atomic\nFormals: this:std::atomic<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic<unsigned int>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned int>* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral(n$1:std::atomic<unsigned int>*,n$2:unsigned int) [line 424, column 50]\n NULLIFY(&d); [line 424, column 50]\n NULLIFY(&this); [line 424, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 424, column 50]\n APPLY_ABSTRACTION; [line 424, column 50]\n " shape="box"]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic<unsigned long long>::atomic\nFormals: this:std::atomic<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic<unsigned long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long long>* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral(n$1:std::atomic<unsigned long long>*,n$2:unsigned long long) [line 461, column 50]\n NULLIFY(&d); [line 461, column 50]\n NULLIFY(&this); [line 461, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 461, column 50]\n APPLY_ABSTRACTION; [line 461, column 50]\n " shape="box"]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic<long long>::atomic\nFormals: this:std::atomic<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic<long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long long>* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral<long long>::__infer_atomic_integral(n$1:std::atomic<long long>*,n$2:long long) [line 451, column 50]\n NULLIFY(&d); [line 451, column 50]\n NULLIFY(&this); [line 451, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 451, column 50]\n APPLY_ABSTRACTION; [line 451, column 50]\n " shape="box"]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 944, column 5]\n *n$0.a:_Bool=0 [line 944, column 5]\n NULLIFY(&this); [line 944, column 5]\n EXIT_SCOPE(n$0,this); [line 944, column 5]\n APPLY_ABSTRACTION; [line 944, column 5]\n " shape="box"]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 946, column 65]\n *n$0.a:_Bool=0 [line 946, column 65]\n NULLIFY(&this); [line 946, column 65]\n EXIT_SCOPE(n$0,this); [line 946, column 65]\n APPLY_ABSTRACTION; [line 946, column 65]\n " shape="box"]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 935, column 12]\n *&return:_Bool=n$0 [line 935, column 5]\n NULLIFY(&ret); [line 935, column 5]\n EXIT_SCOPE(n$0,ret); [line 935, column 5]\n APPLY_ABSTRACTION; [line 935, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 934, column 5]\n *n$1.a:_Bool=1 [line 934, column 5]\n NULLIFY(&this); [line 934, column 5]\n EXIT_SCOPE(n$1,this); [line 934, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 933, column 5]\n n$2=*&this:std::atomic_flag* [line 933, column 16]\n n$3=*n$2.a:_Bool [line 933, column 16]\n *&ret:_Bool=n$3 [line 933, column 5]\n EXIT_SCOPE(n$2,n$3); [line 933, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 940, column 12]\n *&return:_Bool=n$0 [line 940, column 5]\n NULLIFY(&ret); [line 940, column 5]\n EXIT_SCOPE(n$0,ret); [line 940, column 5]\n APPLY_ABSTRACTION; [line 940, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 939, column 5]\n *n$1.a:_Bool=1 [line 939, column 5]\n NULLIFY(&this); [line 939, column 5]\n EXIT_SCOPE(n$1,this); [line 939, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 938, column 5]\n n$2=*&this:std::atomic_flag* [line 938, column 16]\n n$3=*n$2.a:_Bool [line 938, column 16]\n *&ret:_Bool=n$3 [line 938, column 5]\n EXIT_SCOPE(n$2,n$3); [line 938, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" [label="1: Start std::atomic_flag::atomic_flag\nFormals: this:std::atomic_flag* i:_Bool\nLocals: \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" [label="2: Exit std::atomic_flag::atomic_flag \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" [label="3: Constructor Init \n n$1=*&this:std::atomic_flag* [line 927, column 44]\n n$2=*&i:_Bool [line 927, column 46]\n *n$1.a:_Bool=n$2 [line 927, column 44]\n NULLIFY(&this); [line 927, column 44]\n NULLIFY(&i); [line 927, column 44]\n EXIT_SCOPE(n$1,n$2,this,i); [line 927, column 44]\n APPLY_ABSTRACTION; [line 927, column 44]\n " shape="box"]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 65, column 6]\n n$1=*&value:void* [line 65, column 37]\n *n$0:void const *=n$1 [line 65, column 5]\n NULLIFY(&value); [line 65, column 5]\n NULLIFY(&self); [line 65, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 65, column 5]\n APPLY_ABSTRACTION; [line 65, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 53, column 6]\n n$1=*&value:int [line 53, column 13]\n *n$0:void const *=n$1 [line 53, column 5]\n NULLIFY(&value); [line 53, column 5]\n NULLIFY(&self); [line 53, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 53, column 5]\n APPLY_ABSTRACTION; [line 53, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr<int>::reset<int,_void>\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr<int>::reset<int,_void> \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 236, column 15]\n n$2=*&p:int* [line 236, column 42]\n n$3=_fun_std::shared_ptr<int>::model_set(n$1:void const **,n$2:void*) [line 236, column 5]\n NULLIFY(&p); [line 236, column 5]\n NULLIFY(&this); [line 236, column 5]\n EXIT_SCOPE(n$1,n$2,n$3,p,this); [line 236, column 5]\n APPLY_ABSTRACTION; [line 236, column 5]\n " shape="box"]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr<int>::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr<int>::shared_ptr \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr<int>::model_set(n$1:void const **,null:int) [line 97, column 5]\n NULLIFY(&this); [line 97, column 5]\n EXIT_SCOPE(n$1,n$2,this); [line 97, column 5]\n APPLY_ABSTRACTION; [line 97, column 5]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" [label="4: Constructor Init \n n$3=*&this:int** [line 97, column 42]\n n$4=_fun_std::std__shared_ptr<int>::std__shared_ptr(n$3:int**) [line 96, column 13]\n EXIT_SCOPE(n$3,n$4); [line 96, column 13]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" [label="3: Destruction(fields) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::std__shared_ptr<int>::__infer_inner_destructor_~std__shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr<int>::reset<int,_void> \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr<int>::reset<int,_void>(n$4:int**,null:int*) [line 178, column 19]\n EXIT_SCOPE(_,n$4,n$6); [line 178, column 19]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr<int>::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr<int>::~shared_ptr \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" [label="3: Destruction(virtual base) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ;
}

@ -1,107 +1,5 @@
/* @generated */
digraph cfg {
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ;
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled]
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled]
@ -113,14 +11,14 @@ digraph cfg {
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ;
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:int* \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:std::shared_ptr<int> \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:int**) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr<int> [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:std::shared_ptr<int>*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:int**) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:std::shared_ptr<int>); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:std::shared_ptr<int>*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
@ -170,611 +68,4 @@ digraph cfg {
"used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base<long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long>* desired:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base<long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long>* [line 165, column 46]\n n$2=*&desired:long [line 165, column 61]\n *n$1._wrapped_value:long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base<unsigned long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long>* desired:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base<unsigned long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long>* [line 165, column 46]\n n$2=*&desired:unsigned long [line 165, column 61]\n *n$1._wrapped_value:unsigned long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base<short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<short>* desired:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base<short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<short>* [line 165, column 46]\n n$2=*&desired:short [line 165, column 61]\n *n$1._wrapped_value:short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base<unsigned short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned short>* desired:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base<unsigned short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned short>* [line 165, column 46]\n n$2=*&desired:unsigned short [line 165, column 61]\n *n$1._wrapped_value:unsigned short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base<long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long long>* desired:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base<long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long long>* [line 165, column 46]\n n$2=*&desired:long long [line 165, column 61]\n *n$1._wrapped_value:long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base<signed char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<signed char>* desired:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base<signed char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<signed char>* [line 165, column 46]\n n$2=*&desired:signed char [line 165, column 61]\n *n$1._wrapped_value:signed char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base<unsigned long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long long>* desired:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base<unsigned long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long long>* [line 165, column 46]\n n$2=*&desired:unsigned long long [line 165, column 61]\n *n$1._wrapped_value:unsigned long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base<unsigned char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned char>* desired:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base<unsigned char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned char>* [line 165, column 46]\n n$2=*&desired:unsigned char [line 165, column 61]\n *n$1._wrapped_value:unsigned char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base<int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<int>* desired:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base<int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<int>* [line 165, column 46]\n n$2=*&desired:int [line 165, column 61]\n *n$1._wrapped_value:int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base<unsigned int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned int>* desired:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base<unsigned int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned int>* [line 165, column 46]\n n$2=*&desired:unsigned int [line 165, column 61]\n *n$1._wrapped_value:unsigned int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned short>* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned short>*,n$2:unsigned short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long long>* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long long>*,n$2:unsigned long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral<short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<short>* d:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral<short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<short>* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<short>*,n$2:short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral<signed char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral<signed char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<signed char>* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<signed char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<signed char>*,n$2:signed char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral<long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral<long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long long>* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long long>*,n$2:long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral<long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long>* d:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral<long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long>* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long>*,n$2:long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long>* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long>*,n$2:unsigned long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned int>* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned int>*,n$2:unsigned int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned char>* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned char>*,n$2:unsigned char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral<int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<int>* d:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral<int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<int>* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<int>*,n$2:int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic<unsigned short>::atomic\nFormals: this:std::atomic<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic<unsigned short>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned short>* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral(n$1:std::atomic<unsigned short>*,n$2:unsigned short) [line 406, column 50]\n NULLIFY(&d); [line 406, column 50]\n NULLIFY(&this); [line 406, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 406, column 50]\n APPLY_ABSTRACTION; [line 406, column 50]\n " shape="box"]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 470, column 50]\n NULLIFY(&d); [line 470, column 50]\n NULLIFY(&this); [line 470, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 470, column 50]\n APPLY_ABSTRACTION; [line 470, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic<unsigned long>::atomic\nFormals: this:std::atomic<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic<unsigned long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long>* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral(n$1:std::atomic<unsigned long>*,n$2:unsigned long) [line 442, column 50]\n NULLIFY(&d); [line 442, column 50]\n NULLIFY(&this); [line 442, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 442, column 50]\n APPLY_ABSTRACTION; [line 442, column 50]\n " shape="box"]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic<short>::atomic\nFormals: this:std::atomic<short>* d:short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic<short>::atomic \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<short>* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral<short>::__infer_atomic_integral(n$1:std::atomic<short>*,n$2:short) [line 397, column 50]\n NULLIFY(&d); [line 397, column 50]\n NULLIFY(&this); [line 397, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 397, column 50]\n APPLY_ABSTRACTION; [line 397, column 50]\n " shape="box"]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic<long>::atomic\nFormals: this:std::atomic<long>* d:long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic<long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long>* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral<long>::__infer_atomic_integral(n$1:std::atomic<long>*,n$2:long) [line 433, column 50]\n NULLIFY(&d); [line 433, column 50]\n NULLIFY(&this); [line 433, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 433, column 50]\n APPLY_ABSTRACTION; [line 433, column 50]\n " shape="box"]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic<int>::atomic\nFormals: this:std::atomic<int>* d:int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic<int>::atomic \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<int>* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral<int>::__infer_atomic_integral(n$1:std::atomic<int>*,n$2:int) [line 415, column 50]\n NULLIFY(&d); [line 415, column 50]\n NULLIFY(&this); [line 415, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 415, column 50]\n APPLY_ABSTRACTION; [line 415, column 50]\n " shape="box"]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic<unsigned char>::atomic\nFormals: this:std::atomic<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic<unsigned char>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned char>* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral(n$1:std::atomic<unsigned char>*,n$2:unsigned char) [line 388, column 50]\n NULLIFY(&d); [line 388, column 50]\n NULLIFY(&this); [line 388, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 388, column 50]\n APPLY_ABSTRACTION; [line 388, column 50]\n " shape="box"]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 479, column 50]\n NULLIFY(&d); [line 479, column 50]\n NULLIFY(&this); [line 479, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 479, column 50]\n APPLY_ABSTRACTION; [line 479, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic<signed char>::atomic\nFormals: this:std::atomic<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic<signed char>::atomic \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<signed char>* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral<signed char>::__infer_atomic_integral(n$1:std::atomic<signed char>*,n$2:signed char) [line 379, column 50]\n NULLIFY(&d); [line 379, column 50]\n NULLIFY(&this); [line 379, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 379, column 50]\n APPLY_ABSTRACTION; [line 379, column 50]\n " shape="box"]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 370, column 50]\n NULLIFY(&d); [line 370, column 50]\n NULLIFY(&this); [line 370, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 370, column 50]\n APPLY_ABSTRACTION; [line 370, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 488, column 50]\n NULLIFY(&d); [line 488, column 50]\n NULLIFY(&this); [line 488, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 488, column 50]\n APPLY_ABSTRACTION; [line 488, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic<unsigned int>::atomic\nFormals: this:std::atomic<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic<unsigned int>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned int>* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral(n$1:std::atomic<unsigned int>*,n$2:unsigned int) [line 424, column 50]\n NULLIFY(&d); [line 424, column 50]\n NULLIFY(&this); [line 424, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 424, column 50]\n APPLY_ABSTRACTION; [line 424, column 50]\n " shape="box"]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic<unsigned long long>::atomic\nFormals: this:std::atomic<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic<unsigned long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long long>* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral(n$1:std::atomic<unsigned long long>*,n$2:unsigned long long) [line 461, column 50]\n NULLIFY(&d); [line 461, column 50]\n NULLIFY(&this); [line 461, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 461, column 50]\n APPLY_ABSTRACTION; [line 461, column 50]\n " shape="box"]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic<long long>::atomic\nFormals: this:std::atomic<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic<long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long long>* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral<long long>::__infer_atomic_integral(n$1:std::atomic<long long>*,n$2:long long) [line 451, column 50]\n NULLIFY(&d); [line 451, column 50]\n NULLIFY(&this); [line 451, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 451, column 50]\n APPLY_ABSTRACTION; [line 451, column 50]\n " shape="box"]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 944, column 5]\n *n$0.a:_Bool=0 [line 944, column 5]\n NULLIFY(&this); [line 944, column 5]\n EXIT_SCOPE(n$0,this); [line 944, column 5]\n APPLY_ABSTRACTION; [line 944, column 5]\n " shape="box"]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 946, column 65]\n *n$0.a:_Bool=0 [line 946, column 65]\n NULLIFY(&this); [line 946, column 65]\n EXIT_SCOPE(n$0,this); [line 946, column 65]\n APPLY_ABSTRACTION; [line 946, column 65]\n " shape="box"]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 935, column 12]\n *&return:_Bool=n$0 [line 935, column 5]\n NULLIFY(&ret); [line 935, column 5]\n EXIT_SCOPE(n$0,ret); [line 935, column 5]\n APPLY_ABSTRACTION; [line 935, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 934, column 5]\n *n$1.a:_Bool=1 [line 934, column 5]\n NULLIFY(&this); [line 934, column 5]\n EXIT_SCOPE(n$1,this); [line 934, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 933, column 5]\n n$2=*&this:std::atomic_flag* [line 933, column 16]\n n$3=*n$2.a:_Bool [line 933, column 16]\n *&ret:_Bool=n$3 [line 933, column 5]\n EXIT_SCOPE(n$2,n$3); [line 933, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 940, column 12]\n *&return:_Bool=n$0 [line 940, column 5]\n NULLIFY(&ret); [line 940, column 5]\n EXIT_SCOPE(n$0,ret); [line 940, column 5]\n APPLY_ABSTRACTION; [line 940, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 939, column 5]\n *n$1.a:_Bool=1 [line 939, column 5]\n NULLIFY(&this); [line 939, column 5]\n EXIT_SCOPE(n$1,this); [line 939, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 938, column 5]\n n$2=*&this:std::atomic_flag* [line 938, column 16]\n n$3=*n$2.a:_Bool [line 938, column 16]\n *&ret:_Bool=n$3 [line 938, column 5]\n EXIT_SCOPE(n$2,n$3); [line 938, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" [label="1: Start std::atomic_flag::atomic_flag\nFormals: this:std::atomic_flag* i:_Bool\nLocals: \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" [label="2: Exit std::atomic_flag::atomic_flag \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" [label="3: Constructor Init \n n$1=*&this:std::atomic_flag* [line 927, column 44]\n n$2=*&i:_Bool [line 927, column 46]\n *n$1.a:_Bool=n$2 [line 927, column 44]\n NULLIFY(&this); [line 927, column 44]\n NULLIFY(&i); [line 927, column 44]\n EXIT_SCOPE(n$1,n$2,this,i); [line 927, column 44]\n APPLY_ABSTRACTION; [line 927, column 44]\n " shape="box"]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 65, column 6]\n n$1=*&value:void* [line 65, column 37]\n *n$0:void const *=n$1 [line 65, column 5]\n NULLIFY(&value); [line 65, column 5]\n NULLIFY(&self); [line 65, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 65, column 5]\n APPLY_ABSTRACTION; [line 65, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 53, column 6]\n n$1=*&value:int [line 53, column 13]\n *n$0:void const *=n$1 [line 53, column 5]\n NULLIFY(&value); [line 53, column 5]\n NULLIFY(&self); [line 53, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 53, column 5]\n APPLY_ABSTRACTION; [line 53, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr<int>::reset<int,_void>\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr<int>::reset<int,_void> \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 236, column 15]\n n$2=*&p:int* [line 236, column 42]\n n$3=_fun_std::shared_ptr<int>::model_set(n$1:void const **,n$2:void*) [line 236, column 5]\n NULLIFY(&p); [line 236, column 5]\n NULLIFY(&this); [line 236, column 5]\n EXIT_SCOPE(n$1,n$2,n$3,p,this); [line 236, column 5]\n APPLY_ABSTRACTION; [line 236, column 5]\n " shape="box"]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr<int>::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr<int>::shared_ptr \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr<int>::model_set(n$1:void const **,null:int) [line 97, column 5]\n NULLIFY(&this); [line 97, column 5]\n EXIT_SCOPE(n$1,n$2,this); [line 97, column 5]\n APPLY_ABSTRACTION; [line 97, column 5]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" [label="4: Constructor Init \n n$3=*&this:int** [line 97, column 42]\n n$4=_fun_std::std__shared_ptr<int>::std__shared_ptr(n$3:int**) [line 96, column 13]\n EXIT_SCOPE(n$3,n$4); [line 96, column 13]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" [label="3: Destruction(fields) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::std__shared_ptr<int>::__infer_inner_destructor_~std__shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr<int>::reset<int,_void> \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr<int>::reset<int,_void>(n$4:int**,null:int*) [line 178, column 19]\n EXIT_SCOPE(_,n$4,n$6); [line 178, column 19]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr<int>::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr<int>::~shared_ptr \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" [label="3: Destruction(virtual base) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ;
}

@ -1,107 +1,5 @@
/* @generated */
digraph cfg {
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ;
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"]
"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ;
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"]
"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ;
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"]
"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ;
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"]
"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ;
"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled]
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ;
"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled]
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled]
@ -113,14 +11,14 @@ digraph cfg {
"fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ;
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:int* \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> x:std::shared_ptr<int> \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:int**) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>> [line 22, column 1]\n n$1=_fun_std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&s:std::basic_string<char,std::char_traits<char>,std::allocator<char>>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr<int> [line 22, column 1]\n n$3=_fun_std::shared_ptr<int>::~shared_ptr(&x:std::shared_ptr<int>*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:int**) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:std::shared_ptr<int>); [line 19, column 3]\n n$6=_fun_std::shared_ptr<int>::shared_ptr(&x:std::shared_ptr<int>*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
@ -170,611 +68,4 @@ digraph cfg {
"used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base<long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long>* desired:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ;
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base<long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long>* [line 165, column 46]\n n$2=*&desired:long [line 165, column 61]\n *n$1._wrapped_value:long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base<long>#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base<unsigned long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long>* desired:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base<unsigned long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long>* [line 165, column 46]\n n$2=*&desired:unsigned long [line 165, column 61]\n *n$1._wrapped_value:unsigned long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long>#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base<short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<short>* desired:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ;
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base<short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<short>* [line 165, column 46]\n n$2=*&desired:short [line 165, column 61]\n *n$1._wrapped_value:short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base<short>#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base<unsigned short>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned short>* desired:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base<unsigned short>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned short>* [line 165, column 46]\n n$2=*&desired:unsigned short [line 165, column 61]\n *n$1._wrapped_value:unsigned short=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned short>#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base<long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<long long>* desired:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ;
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base<long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<long long>* [line 165, column 46]\n n$2=*&desired:long long [line 165, column 61]\n *n$1._wrapped_value:long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base<long long>#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base<signed char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<signed char>* desired:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ;
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base<signed char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<signed char>* [line 165, column 46]\n n$2=*&desired:signed char [line 165, column 61]\n *n$1._wrapped_value:signed char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base<signed char>#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base<unsigned long long>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned long long>* desired:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base<unsigned long long>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned long long>* [line 165, column 46]\n n$2=*&desired:unsigned long long [line 165, column 61]\n *n$1._wrapped_value:unsigned long long=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned long long>#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base<unsigned char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned char>* desired:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base<unsigned char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned char>* [line 165, column 46]\n n$2=*&desired:unsigned char [line 165, column 61]\n *n$1._wrapped_value:unsigned char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned char>#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base<int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<int>* desired:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ;
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base<int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<int>* [line 165, column 46]\n n$2=*&desired:int [line 165, column 61]\n *n$1._wrapped_value:int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base<int>#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base<unsigned int>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<unsigned int>* desired:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ;
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base<unsigned int>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<unsigned int>* [line 165, column 46]\n n$2=*&desired:unsigned int [line 165, column 61]\n *n$1._wrapped_value:unsigned int=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base<unsigned int>#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base<char>::__infer_atomic_base\nFormals: this:std::__infer_atomic_base<char>* desired:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ;
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base<char>::__infer_atomic_base \n " color=yellow style=filled]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base<char>* [line 165, column 46]\n n$2=*&desired:char [line 165, column 61]\n *n$1._wrapped_value:char=n$2 [line 165, column 46]\n NULLIFY(&desired); [line 165, column 46]\n NULLIFY(&this); [line 165, column 46]\n EXIT_SCOPE(n$1,n$2,desired,this); [line 165, column 46]\n APPLY_ABSTRACTION; [line 165, column 46]\n " shape="box"]
"__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base<char>#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned short>* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned short>*,n$2:unsigned short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned short>#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long long>* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long long>*,n$2:unsigned long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long long>#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral<short>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<short>* d:short\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ;
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral<short>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<short>* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<short>::__infer_atomic_base(n$1:std::__infer_atomic_integral<short>*,n$2:short) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral<short>#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral<signed char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ;
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral<signed char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<signed char>* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<signed char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<signed char>*,n$2:signed char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral<signed char>#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral<long long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral<long long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long long>* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long long>*,n$2:long long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral<long long>#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral<long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<long>* d:long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ;
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral<long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<long>* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<long>*,n$2:long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral<long>#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned long>* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned long>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned long>*,n$2:unsigned long) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned long>#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned int>* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned int>*,n$2:unsigned int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned int>#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ;
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<unsigned char>* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<unsigned char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<unsigned char>*,n$2:unsigned char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral<unsigned char>#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral<char>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<char>* d:char\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ;
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral<char>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<char>* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<char>::__infer_atomic_base(n$1:std::__infer_atomic_integral<char>*,n$2:char) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral<char>#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral<int>::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral<int>* d:int\nLocals: \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ;
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral<int>::__infer_atomic_integral \n " color=yellow style=filled]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral<int>* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base<int>::__infer_atomic_base(n$1:std::__infer_atomic_integral<int>*,n$2:int) [line 185, column 53]\n NULLIFY(&d); [line 185, column 53]\n NULLIFY(&this); [line 185, column 53]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 185, column 53]\n APPLY_ABSTRACTION; [line 185, column 53]\n " shape="box"]
"__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral<int>#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic<unsigned short>::atomic\nFormals: this:std::atomic<unsigned short>* d:unsigned short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ;
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic<unsigned short>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned short>* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned short>::__infer_atomic_integral(n$1:std::atomic<unsigned short>*,n$2:unsigned short) [line 406, column 50]\n NULLIFY(&d); [line 406, column 50]\n NULLIFY(&this); [line 406, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 406, column 50]\n APPLY_ABSTRACTION; [line 406, column 50]\n " shape="box"]
"atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic<unsigned short>#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ;
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 470, column 50]\n NULLIFY(&d); [line 470, column 50]\n NULLIFY(&this); [line 470, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 470, column 50]\n APPLY_ABSTRACTION; [line 470, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic<char>#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic<unsigned long>::atomic\nFormals: this:std::atomic<unsigned long>* d:unsigned long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ;
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic<unsigned long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long>* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long>::__infer_atomic_integral(n$1:std::atomic<unsigned long>*,n$2:unsigned long) [line 442, column 50]\n NULLIFY(&d); [line 442, column 50]\n NULLIFY(&this); [line 442, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 442, column 50]\n APPLY_ABSTRACTION; [line 442, column 50]\n " shape="box"]
"atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic<unsigned long>#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic<short>::atomic\nFormals: this:std::atomic<short>* d:short\nLocals: \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ;
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic<short>::atomic \n " color=yellow style=filled]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<short>* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral<short>::__infer_atomic_integral(n$1:std::atomic<short>*,n$2:short) [line 397, column 50]\n NULLIFY(&d); [line 397, column 50]\n NULLIFY(&this); [line 397, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 397, column 50]\n APPLY_ABSTRACTION; [line 397, column 50]\n " shape="box"]
"atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic<short>#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic<long>::atomic\nFormals: this:std::atomic<long>* d:long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ;
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic<long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long>* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral<long>::__infer_atomic_integral(n$1:std::atomic<long>*,n$2:long) [line 433, column 50]\n NULLIFY(&d); [line 433, column 50]\n NULLIFY(&this); [line 433, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 433, column 50]\n APPLY_ABSTRACTION; [line 433, column 50]\n " shape="box"]
"atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic<long>#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic<int>::atomic\nFormals: this:std::atomic<int>* d:int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ;
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic<int>::atomic \n " color=yellow style=filled]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<int>* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral<int>::__infer_atomic_integral(n$1:std::atomic<int>*,n$2:int) [line 415, column 50]\n NULLIFY(&d); [line 415, column 50]\n NULLIFY(&this); [line 415, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 415, column 50]\n APPLY_ABSTRACTION; [line 415, column 50]\n " shape="box"]
"atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic<int>#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic<unsigned char>::atomic\nFormals: this:std::atomic<unsigned char>* d:unsigned char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ;
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic<unsigned char>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned char>* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned char>::__infer_atomic_integral(n$1:std::atomic<unsigned char>*,n$2:unsigned char) [line 388, column 50]\n NULLIFY(&d); [line 388, column 50]\n NULLIFY(&this); [line 388, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 388, column 50]\n APPLY_ABSTRACTION; [line 388, column 50]\n " shape="box"]
"atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic<unsigned char>#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ;
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 479, column 50]\n NULLIFY(&d); [line 479, column 50]\n NULLIFY(&this); [line 479, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 479, column 50]\n APPLY_ABSTRACTION; [line 479, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic<char>#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic<signed char>::atomic\nFormals: this:std::atomic<signed char>* d:signed char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ;
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic<signed char>::atomic \n " color=yellow style=filled]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<signed char>* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral<signed char>::__infer_atomic_integral(n$1:std::atomic<signed char>*,n$2:signed char) [line 379, column 50]\n NULLIFY(&d); [line 379, column 50]\n NULLIFY(&this); [line 379, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 379, column 50]\n APPLY_ABSTRACTION; [line 379, column 50]\n " shape="box"]
"atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic<signed char>#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ;
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 370, column 50]\n NULLIFY(&d); [line 370, column 50]\n NULLIFY(&this); [line 370, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 370, column 50]\n APPLY_ABSTRACTION; [line 370, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic<char>#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic<char>::atomic\nFormals: this:std::atomic<char>* d:char\nLocals: \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ;
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic<char>::atomic \n " color=yellow style=filled]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<char>* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral<char>::__infer_atomic_integral(n$1:std::atomic<char>*,n$2:char) [line 488, column 50]\n NULLIFY(&d); [line 488, column 50]\n NULLIFY(&this); [line 488, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 488, column 50]\n APPLY_ABSTRACTION; [line 488, column 50]\n " shape="box"]
"atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic<char>#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic<unsigned int>::atomic\nFormals: this:std::atomic<unsigned int>* d:unsigned int\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ;
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic<unsigned int>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned int>* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned int>::__infer_atomic_integral(n$1:std::atomic<unsigned int>*,n$2:unsigned int) [line 424, column 50]\n NULLIFY(&d); [line 424, column 50]\n NULLIFY(&this); [line 424, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 424, column 50]\n APPLY_ABSTRACTION; [line 424, column 50]\n " shape="box"]
"atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic<unsigned int>#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic<unsigned long long>::atomic\nFormals: this:std::atomic<unsigned long long>* d:unsigned long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ;
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic<unsigned long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<unsigned long long>* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral<unsigned long long>::__infer_atomic_integral(n$1:std::atomic<unsigned long long>*,n$2:unsigned long long) [line 461, column 50]\n NULLIFY(&d); [line 461, column 50]\n NULLIFY(&this); [line 461, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 461, column 50]\n APPLY_ABSTRACTION; [line 461, column 50]\n " shape="box"]
"atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic<unsigned long long>#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic<long long>::atomic\nFormals: this:std::atomic<long long>* d:long long\nLocals: \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ;
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic<long long>::atomic \n " color=yellow style=filled]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic<long long>* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral<long long>::__infer_atomic_integral(n$1:std::atomic<long long>*,n$2:long long) [line 451, column 50]\n NULLIFY(&d); [line 451, column 50]\n NULLIFY(&this); [line 451, column 50]\n EXIT_SCOPE(n$1,n$2,n$3,d,this); [line 451, column 50]\n APPLY_ABSTRACTION; [line 451, column 50]\n " shape="box"]
"atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic<long long>#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_1" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" ;
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 944, column 5]\n *n$0.a:_Bool=0 [line 944, column 5]\n NULLIFY(&this); [line 944, column 5]\n EXIT_SCOPE(n$0,this); [line 944, column 5]\n APPLY_ABSTRACTION; [line 944, column 5]\n " shape="box"]
"clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_3" -> "clear#atomic_flag#std#(3684357514402407574).b0b9e53b3e4cf6978b960d4491c0af6d_2" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" [label="1: Start std::atomic_flag::clear\nFormals: this:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_1" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" ;
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" [label="2: Exit std::atomic_flag::clear \n " color=yellow style=filled]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:std::atomic_flag* [line 946, column 65]\n *n$0.a:_Bool=0 [line 946, column 65]\n NULLIFY(&this); [line 946, column 65]\n EXIT_SCOPE(n$0,this); [line 946, column 65]\n APPLY_ABSTRACTION; [line 946, column 65]\n " shape="box"]
"clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_3" -> "clear#atomic_flag#std#(4757429354090136896).a3ca4a9a64ba2fa439a627057e253cfc_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_1" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 935, column 12]\n *&return:_Bool=n$0 [line 935, column 5]\n NULLIFY(&ret); [line 935, column 5]\n EXIT_SCOPE(n$0,ret); [line 935, column 5]\n APPLY_ABSTRACTION; [line 935, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_2" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 934, column 5]\n *n$1.a:_Bool=1 [line 934, column 5]\n NULLIFY(&this); [line 934, column 5]\n EXIT_SCOPE(n$1,this); [line 934, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_3" ;
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 933, column 5]\n n$2=*&this:std::atomic_flag* [line 933, column 16]\n n$3=*n$2.a:_Bool [line 933, column 16]\n *&ret:_Bool=n$3 [line 933, column 5]\n EXIT_SCOPE(n$2,n$3); [line 933, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_5" -> "test_and_set#atomic_flag#std#(6342589292624928640).e1a95571862fb026e9cf3fed47e15f71_4" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" [label="1: Start std::atomic_flag::test_and_set\nFormals: this:std::atomic_flag* mo:int\nLocals: ret:_Bool \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_1" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" [label="2: Exit std::atomic_flag::test_and_set \n " color=yellow style=filled]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" [label="3: Return Stmt \n n$0=*&ret:_Bool [line 940, column 12]\n *&return:_Bool=n$0 [line 940, column 5]\n NULLIFY(&ret); [line 940, column 5]\n EXIT_SCOPE(n$0,ret); [line 940, column 5]\n APPLY_ABSTRACTION; [line 940, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_2" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&this:std::atomic_flag* [line 939, column 5]\n *n$1.a:_Bool=1 [line 939, column 5]\n NULLIFY(&this); [line 939, column 5]\n EXIT_SCOPE(n$1,this); [line 939, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_3" ;
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" [label="5: DeclStmt \n VARIABLE_DECLARED(ret:_Bool); [line 938, column 5]\n n$2=*&this:std::atomic_flag* [line 938, column 16]\n n$3=*n$2.a:_Bool [line 938, column 16]\n *&ret:_Bool=n$3 [line 938, column 5]\n EXIT_SCOPE(n$2,n$3); [line 938, column 5]\n " shape="box"]
"test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_5" -> "test_and_set#atomic_flag#std#(6471561702066990866).1f32ee5584df8a2cd5807312ee98cdb7_4" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" [label="1: Start std::atomic_flag::atomic_flag\nFormals: this:std::atomic_flag* i:_Bool\nLocals: \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_1" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" ;
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" [label="2: Exit std::atomic_flag::atomic_flag \n " color=yellow style=filled]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" [label="3: Constructor Init \n n$1=*&this:std::atomic_flag* [line 927, column 44]\n n$2=*&i:_Bool [line 927, column 46]\n *n$1.a:_Bool=n$2 [line 927, column 44]\n NULLIFY(&this); [line 927, column 44]\n NULLIFY(&i); [line 927, column 44]\n EXIT_SCOPE(n$1,n$2,this,i); [line 927, column 44]\n APPLY_ABSTRACTION; [line 927, column 44]\n " shape="box"]
"atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_3" -> "atomic_flag#atomic_flag#std#{10931176997288531904|constexpr}.57d7555f5addc9691c180d812b1aad13_2" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ;
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 65, column 6]\n n$1=*&value:void* [line 65, column 37]\n *n$0:void const *=n$1 [line 65, column 5]\n NULLIFY(&value); [line 65, column 5]\n NULLIFY(&self); [line 65, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 65, column 5]\n APPLY_ABSTRACTION; [line 65, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr<int>#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr<int>::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ;
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr<int>::model_set \n " color=yellow style=filled]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void const ** [line 53, column 6]\n n$1=*&value:int [line 53, column 13]\n *n$0:void const *=n$1 [line 53, column 5]\n NULLIFY(&value); [line 53, column 5]\n NULLIFY(&self); [line 53, column 5]\n EXIT_SCOPE(n$0,n$1,value,self); [line 53, column 5]\n APPLY_ABSTRACTION; [line 53, column 5]\n " shape="box"]
"model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr<int>#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr<int>::reset<int,_void>\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ;
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr<int>::reset<int,_void> \n " color=yellow style=filled]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 236, column 15]\n n$2=*&p:int* [line 236, column 42]\n n$3=_fun_std::shared_ptr<int>::model_set(n$1:void const **,n$2:void*) [line 236, column 5]\n NULLIFY(&p); [line 236, column 5]\n NULLIFY(&this); [line 236, column 5]\n EXIT_SCOPE(n$1,n$2,n$3,p,this); [line 236, column 5]\n APPLY_ABSTRACTION; [line 236, column 5]\n " shape="box"]
"reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset<int,_void>#shared_ptr<int>#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr<int>::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr<int>::shared_ptr \n " color=yellow style=filled]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr<int>::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr<int>::model_set(n$1:void const **,null:int) [line 97, column 5]\n NULLIFY(&this); [line 97, column 5]\n EXIT_SCOPE(n$1,n$2,this); [line 97, column 5]\n APPLY_ABSTRACTION; [line 97, column 5]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ;
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" [label="4: Constructor Init \n n$3=*&this:int** [line 97, column 42]\n n$4=_fun_std::std__shared_ptr<int>::std__shared_ptr(n$3:int**) [line 96, column 13]\n EXIT_SCOPE(n$3,n$4); [line 96, column 13]\n " shape="box"]
"shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr<int>#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" [label="3: Destruction(fields) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::std__shared_ptr<int>::__infer_inner_destructor_~std__shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ;
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr<int>::reset<int,_void> \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr<int>::reset<int,_void>(n$4:int**,null:int*) [line 178, column 19]\n EXIT_SCOPE(_,n$4,n$6); [line 178, column 19]\n " shape="box"]
"__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr<int>#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr<int>::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ;
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr<int>::~shared_ptr \n " color=yellow style=filled]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" [label="3: Destruction(virtual base) \n n$0=*&this:int** [line 178, column 39]\n _=*n$0:int* [line 178, column 39]\n n$2=_fun_std::shared_ptr<int>::__infer_inner_destructor_~shared_ptr(n$0:int**) injected [line 178, column 39]\n NULLIFY(&this); [line 178, column 39]\n EXIT_SCOPE(_,n$0,n$2,this); [line 178, column 39]\n APPLY_ABSTRACTION; [line 178, column 39]\n " shape="box"]
"~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr<int>#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ;
}

@ -6,7 +6,7 @@
TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem
CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c
CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c
INFER_OPTIONS = --bufferoverrun-only --ml-buckets cpp --no-filtering --debug-exceptions \
--project-root $(TESTS_DIR) --report-force-relative-path
INFERPRINT_OPTIONS = --issues-tests

@ -327,10 +327,10 @@ FOLLY_DECLARE_VECTOR_RESIZE_WITHOUT_INIT(unsigned char)
#endif
namespace infer_test {
void foo_string(std::string* s, std::size_t n) {
folly::resizeWithoutInitialization(*s, n);
void foo_string(std::string& s, std::size_t n) {
folly::resizeWithoutInitialization(s, n);
}
void foo_vector(std::vector<std::vector<int>>& v, std::size_t n) {
void foo_vector(std::vector<int>& v, std::size_t n) {
folly::resizeWithoutInitialization(v, n);
}
} // namespace infer_test

@ -54,7 +54,7 @@ std::string do_not_ignore_empty2_Good(const std::string& s) {
return v[0];
}
std::string do_not_ignore_empty_Bad(const std::string& s) {
std::string FN_do_not_ignore_empty_Bad(const std::string& s) {
std::vector<std::string> v;
folly::split("delimiter", s, v, true);
return v[0];

@ -1,6 +1,4 @@
../../facebook-clang-plugins/clang/install/include/c++/v1/string, std::operator==<std::allocator<char>_>, 13, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::basic_string<char,std::char_traits<char>,std::allocator<char>>::data,Assignment,Array access: Offset: [-oo, +oo] Size: [0, +oo]]
INFER_MODEL/cpp/include/infer_model/vector_bufferoverrun.h, std::vector<Int_no_copy,std::allocator<Int_no_copy>>::erase, 2, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [<LHS trace>,Parameter `this->infer_size`,<RHS trace>,Unknown value from: std::distance<std::__wrap_iter<const_Int_no_copy_*>_>,Binary operation: (this->infer_size - [-oo, +oo]):unsigned64]
INFER_MODEL/cpp/include/infer_model/vector_bufferoverrun.h, std::vector<int,std::allocator<int>>::insert<std::__list_iterator<int,_void_*>_>, 7, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [<LHS trace>,Parameter `this->infer_size`,<RHS trace>,Unknown value from: std::distance<std::__list_iterator<int,_void_*>_>,Binary operation: (this->infer_size + [-oo, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/arith.cpp, bool_overflow2_Good_FP, 2, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here]
codetoanalyze/cpp/bufferoverrun/arith.cpp, bool_overflow2_Good_FP, 3, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Length trace>,Array declaration,Array access: Offset: 10 Size: 10]
codetoanalyze/cpp/bufferoverrun/arith.cpp, bool_overflow_Bad, 2, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here]
@ -44,14 +42,9 @@ codetoanalyze/cpp/bufferoverrun/conditional_proof_obligation.cpp, call_condition
codetoanalyze/cpp/bufferoverrun/conditional_proof_obligation.cpp, call_conditional_inequality_join2_2_Bad, 1, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Call,<Offset trace>,Parameter `idx`,<Length trace>,Array declaration,Array access: Offset: 6 Size: 5 by call to `conditional_inequality_join2` ]
codetoanalyze/cpp/bufferoverrun/conditional_proof_obligation.cpp, call_conditional_minus2_2_Bad, 2, INTEGER_OVERFLOW_L1, no_bucket, ERROR, [Call,<LHS trace>,Parameter `size`,Binary operation: (0 - 1):unsigned32 by call to `conditional_minus2` ]
codetoanalyze/cpp/bufferoverrun/conditional_proof_obligation.cpp, call_conditional_minus_2_Bad, 2, INTEGER_OVERFLOW_L1, no_bucket, ERROR, [Call,<LHS trace>,Parameter `size`,Binary operation: (0 - 1):unsigned32 by call to `conditional_minus` ]
codetoanalyze/cpp/bufferoverrun/cpp_is_tricky.cpp, CppIsTricky::vector_size_Bad, 1, BUFFER_OVERRUN_U5, no_bucket, ERROR, [Unknown value from: __infer_skip_function,Call,<Length trace>,Parameter `*__il`,Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/cpp_is_tricky.cpp, CppIsTricky::vector_size_Bad, 3, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [<LHS trace>,Assignment,<RHS trace>,Call,Call,Unknown value from: std::distance<const_int_*>,Call,Parameter `__n`,Assignment,Call,Parameter `__x->infer_size`,Call,Parameter `this->infer_size`,Assignment,Call,Parameter `__n`,Assignment,Call,Parameter `this->infer_size`,Assignment,Binary operation: (1 - [0, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/cpp_is_tricky.cpp, CppIsTricky::vector_size_Bad, 3, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [<LHS trace>,Assignment,<RHS trace>,Unknown value from: std::vector<int,std::allocator<int>>::size,Binary operation: (1 - [-oo, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/external.cpp, extern_bad, 5, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: lib,Assignment,Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/external.cpp, extern_bad, 10, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Length trace>,Array declaration,Array access: Offset: 30 Size: 10]
codetoanalyze/cpp/bufferoverrun/folly_split.cpp, folly_split::do_not_ignore_empty2_Good, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Through,Call,Parameter `this->infer_size`,Call,<RHS trace>,Parameter `this->infer_size`,Binary operation: (4 × [1, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/folly_split.cpp, folly_split::do_not_ignore_empty_Bad, 3, BUFFER_OVERRUN_L4, no_bucket, ERROR, [Call,Call,Assignment,Through,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 0 Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/folly_split.cpp, folly_split::do_not_ignore_empty_Bad, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Through,Call,Parameter `this->infer_size`,Call,<RHS trace>,Parameter `this->infer_size`,Binary operation: (4 × [0, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/folly_split.cpp, folly_split::do_not_ignore_empty_Good, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Through,Call,Parameter `this->infer_size`,Call,<RHS trace>,Parameter `this->infer_size`,Binary operation: (4 × [1, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/function_call.cpp, call_by_ref_bad, 4, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Offset trace>,Call,Assignment,<Length trace>,Array declaration,Array access: Offset: -1 Size: 10]
codetoanalyze/cpp/bufferoverrun/function_call.cpp, call_loop_with_init_S_Bad, 2, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Offset trace>,Call,Parameter `length`,Assignment,<Length trace>,Array declaration,Array access: Offset: 10 Size: 10]
codetoanalyze/cpp/bufferoverrun/realloc.cpp, realloc_Bad, 4, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Offset trace>,Assignment,<Length trace>,Array declaration,Assignment,Array access: Offset: 5 Size: 5]
@ -68,14 +61,11 @@ codetoanalyze/cpp/bufferoverrun/relation.cpp, call2_plus_params_Bad, 0, BUFFER_O
codetoanalyze/cpp/bufferoverrun/remove_temps.cpp, C::foo_Bad, 1, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here]
codetoanalyze/cpp/bufferoverrun/remove_temps.cpp, C::foo_Bad, 6, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Length trace>,Array declaration,Array access: Offset: 10 Size: 5]
codetoanalyze/cpp/bufferoverrun/remove_temps.cpp, C::goo, 1, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM<TFM>::fB_FP, 0, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [<LHS trace>,Parameter `*o`,Call,Parameter `*k`,Call,Parameter `*k`,Assignment,Assignment,Binary operation: ([-oo, +oo] + 1):unsigned64]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM<TFM>::lI_FP, 2, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [<LHS trace>,Call,Parameter `*o`,Call,Parameter `*k`,Call,Parameter `*k`,Assignment,Assignment,Assignment,Assignment,Binary operation: ([-oo, +oo] - 1):signed32]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, am_Good_FP, 5, BUFFER_OVERRUN_L5, no_bucket, ERROR, [Call,Call,Call,Assignment,Assignment,Call,Parameter `t->bI`,Call,Assignment,Call,Parameter `bi`,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: [0, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, am_Good_FP, 5, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Call,Assignment,Assignment,Call,Parameter `t->bI`,Call,Assignment,Call,<LHS trace>,Parameter `bi`,Binary operation: ([-oo, +oo] - 1):signed32 by call to `ral_FP` ]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, gal_FP, 4, BUFFER_OVERRUN_L5, no_bucket, ERROR, [Call,Parameter `this->b.infer_size`,Call,Parameter `this->b.infer_size`,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: [0, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, gal_FP, 4, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Parameter `this->b.infer_size`,Call,Parameter `this->b.infer_size`,Call,Parameter `this->infer_size`,Call,<RHS trace>,Parameter `this->infer_size`,Binary operation: (4 × [0, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, ral_FP, 3, BUFFER_OVERRUN_S2, no_bucket, ERROR, [Parameter `t->bI`,Call,Assignment,Call,Parameter `bi`,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: [-1+max(1, t->bI.lb), -1+max(1, t->bI.ub)] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, ral_FP, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Parameter `this->b.infer_size`,Call,Parameter `this->b.infer_size`,Call,Parameter `this->infer_size`,Call,<RHS trace>,Parameter `this->infer_size`,Binary operation: (4 × [0, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM<TFM>::fB_FP, 0, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [<LHS trace>,Unknown value from: std::vector<std::unique_ptr<LMB<TFM>,std::default_delete<LMB<TFM>>>,std::allocator<std::unique_ptr<LMB<TFM>,std::default_delete<LMB<TFM>>>>>::size,Binary operation: ([-oo, +oo] + 1):unsigned64]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM<TFM>::lI_FP, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::unique_ptr<LMB<TFM>,std::default_delete<LMB<TFM>>>::operator->,Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM<TFM>::lI_FP, 2, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [<LHS trace>,Call,Unknown value from: std::vector<std::unique_ptr<LMB<TFM>,std::default_delete<LMB<TFM>>>,std::allocator<std::unique_ptr<LMB<TFM>,std::default_delete<LMB<TFM>>>>>::size,Assignment,Assignment,Binary operation: ([-oo, +oo] - 1):signed32]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM<TFM>::uI, 0, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::unique_ptr<LMB<TFM>,std::default_delete<LMB<TFM>>>::operator->,Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/repro1.cpp, am_Good_FP, 5, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Call,Assignment,Assignment,Call,Parameter `t->bI`,Call,Assignment,Call,<LHS trace>,Parameter `bi`,Binary operation: ([-oo, +oo] - 1):signed32 by call to `ral_good` ]
codetoanalyze/cpp/bufferoverrun/simple_vector.cpp, my_vector_oob_Bad, 2, BUFFER_OVERRUN_L2, no_bucket, ERROR, [Parameter `v->_size`,Call,<Offset trace>,Parameter `i`,<Length trace>,Parameter `this->_size`,Array declaration,Assignment,Array access: Offset: v->_size Size: v->_size by call to `int_vector::access_at` ]
codetoanalyze/cpp/bufferoverrun/std_array.cpp, array_iter1_Bad, 5, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Length trace>,Array declaration,Array access: Offset: 10 Size: 5]
codetoanalyze/cpp/bufferoverrun/std_array.cpp, array_iter2_Bad, 5, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Length trace>,Array declaration,Array access: Offset: 10 Size: 5]
@ -115,21 +105,23 @@ codetoanalyze/cpp/bufferoverrun/std_string.cpp, to_string2_Good, 6, CONDITION_AL
codetoanalyze/cpp/bufferoverrun/symb_arr.cpp, symb_arr_alloc::symb_arr_access_bad, 0, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Length trace>,Parameter `this->h[*]`,Array access: Offset: 10 Size: 10]
codetoanalyze/cpp/bufferoverrun/this.cpp, CThis::access_Bad, 2, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Offset trace>,Parameter `this->n`,<Length trace>,Parameter `this->n`,Array declaration,Array access: Offset: this->n + 1 Size: this->n + 1]
codetoanalyze/cpp/bufferoverrun/trivial.cpp, trivial, 2, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Length trace>,Array declaration,Array access: Offset: 10 Size: 10]
codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Bad, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Call,<LHS trace>,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64]
codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Bad, 6, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Call,Call,Assignment,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 6 Size: 5]
codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Good, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Call,<LHS trace>,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64]
codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Good_2, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Call,<LHS trace>,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64]
codetoanalyze/cpp/bufferoverrun/vector.cpp, data_Bad, 4, BUFFER_OVERRUN_L1, no_bucket, ERROR, [<Offset trace>,Assignment,<Length trace>,Call,Parameter `__n`,Call,Parameter `__n`,Assignment,Call,Parameter `this->infer_size`,Array declaration,Assignment,Assignment,Array access: Offset: 10 Size: 5]
codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 7, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [Call,Unknown value from: std::distance<std::__wrap_iter<const_Int_no_copy_*>_>,Assignment,Call,<LHS trace>,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64]
codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 10, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [Call,Unknown value from: std::distance<std::__wrap_iter<const_Int_no_copy_*>_>,Assignment,Call,Parameter `this->infer_size`,Assignment,Call,Parameter `this->infer_size`,Assignment,Call,Parameter `this->infer_size`,Assignment,Call,<LHS trace>,Parameter `this->infer_size`,<RHS trace>,Parameter `__n`,Binary operation: ([3, +oo] + 42):unsigned64]
codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 16, BUFFER_OVERRUN_U5, no_bucket, ERROR, [Unknown value from: __infer_skip_function,Call,<Length trace>,Parameter `*__il`,Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 17, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [Call,Call,Unknown value from: std::distance<const_int_*>,Call,Parameter `__n`,Assignment,Call,Parameter `this->infer_size`,Call,<RHS trace>,Parameter `this->infer_size`,Binary operation: (4 × [0, +oo]):unsigned64]
codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 18, BUFFER_OVERRUN_U5, no_bucket, ERROR, [Call,Call,Unknown value from: std::distance<const_int_*>,Call,Parameter `__n`,Assignment,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 1 Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, out_of_bound_Bad, 2, BUFFER_OVERRUN_L2, no_bucket, ERROR, [Parameter `v->infer_size`,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: v->infer_size Size: v->infer_size]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_assert_Good, 6, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_assert_Good_2, 6, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_constructor_Good, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_data_Good, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::data,Assignment,Array access: Offset: [-oo, +oo] (⇐ [-oo, +oo] + 4) Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_push_back_Good, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_reserve_Good, 4, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access2, 6, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [<LHS trace>,Unknown value from: std::vector<int,std::allocator<int>>::size,Binary operation: ([0, +oo] + 1):unsigned32]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access2, 7, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Offset trace>,Unknown value from: std::vector<int,std::allocator<int>>::size,<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::size,Array declaration,Array access: Offset: [0, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access3_Good, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access4, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access5, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Bad, 6, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, data_Bad, 4, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Offset trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::data,Assignment,Array access: Offset: [-oo, +oo] (⇐ [-oo, +oo] + [-oo, +oo]) Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, out_of_bound_Bad, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, precise_subst_Bad, 3, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Array declaration,Call,Parameter `*init`,Assignment,Call,Parameter `*__param_0->a`,Assignment,Call,<Length trace>,Parameter `count`,Call,Parameter `idx`,Assignment,Array access: Offset: -1 Size: 10 by call to `access_minus_one` ]
codetoanalyze/cpp/bufferoverrun/vector.cpp, precise_subst_Good_FP, 3, BUFFER_OVERRUN_L3, no_bucket, ERROR, [Array declaration,Call,Parameter `*init`,Assignment,Call,Parameter `*__param_0->a`,Assignment,Call,<Length trace>,Parameter `count`,Call,Parameter `idx`,Assignment,Array access: Offset: [-1, 0] Size: 10 by call to `access_minus_one` ]
codetoanalyze/cpp/bufferoverrun/vector.cpp, push_back_Bad, 3, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Call,Call,Assignment,Call,Parameter `this->infer_size`,Assignment,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 1 Size: 1]
codetoanalyze/cpp/bufferoverrun/vector.cpp, reserve_Bad, 3, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Call,Call,Assignment,Call,Parameter `__n`,Call,<Offset trace>,Parameter `index`,<Length trace>,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 0 Size: 0]
codetoanalyze/cpp/bufferoverrun/vector.cpp, reserve_Bad, 3, INFERBO_ALLOC_IS_ZERO, no_bucket, ERROR, [Call,Call,Assignment,Call,Parameter `this->infer_size`,Call,Parameter `this->infer_size`,Allocation: Length: 0]
codetoanalyze/cpp/bufferoverrun/vector.cpp, safe_access3_Good, 2, CONDITION_ALWAYS_FALSE, no_bucket, WARNING, [Here]
codetoanalyze/cpp/bufferoverrun/vector.cpp, push_back_Bad, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/vector.cpp, reserve_Bad, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [<Length trace>,Unknown value from: std::vector<int,std::allocator<int>>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]]
codetoanalyze/cpp/bufferoverrun/void_ptr.cpp, FP_call_casting_void_ptr_Ok, 2, BUFFER_OVERRUN_L5, no_bucket, ERROR, [Array declaration,Call,<Length trace>,Parameter `*p`,Assignment,Array access: Offset: 14 Size: 2 by call to `casting_void_ptr` ]

@ -103,7 +103,7 @@ typedef TFM LMDM;
static LM<LMDM>* al;
static inline void ral_FP(lt* t, ai a) {
static inline void ral_good(lt* t, ai a) {
ASSERT(t);
lo o = alo(a);
al->u(*t, o);
@ -138,5 +138,5 @@ static void am_Good_FP(im* it) {
const ai a = aft(ch->i1);
lt at;
gal_FP(&at, a);
ral_FP(&at, a);
ral_good(&at, a);
}

@ -13,12 +13,12 @@ void out_of_bound_Bad(std::vector<int> v) {
v[n] = 1;
}
void constructor_Good() {
void FP_constructor_Good() {
std::vector<int> v(1);
v[0] = 2;
}
void push_back_Good() {
void FP_push_back_Good() {
std::vector<int> v;
v.push_back(1);
v[0] = 2;
@ -30,7 +30,7 @@ void push_back_Bad() {
v[1] = 2;
}
void reserve_Good() {
void FP_reserve_Good() {
std::vector<int> v;
v.reserve(42);
v.push_back(1);
@ -43,7 +43,7 @@ void reserve_Bad() {
v[0] = 2;
}
void safe_access(std::vector<int> v) {
void FP_safe_access(std::vector<int> v) {
if (v.size() >= 10) {
v[9] = 1;
}
@ -51,10 +51,10 @@ void safe_access(std::vector<int> v) {
void call_safe_access_Good() {
std::vector<int> v(5, 0);
safe_access(v);
FP_safe_access(v);
}
void safe_access2(std::vector<int> v) {
void FP_safe_access2(std::vector<int> v) {
if (v.empty()) {
return;
}
@ -67,50 +67,17 @@ void safe_access2(std::vector<int> v) {
void call_safe_access2_Good() {
std::vector<int> v;
safe_access2(v);
FP_safe_access2(v);
}
struct Int_no_copy {
Int_no_copy(Int_no_copy&) = delete;
Int_no_copy(const Int_no_copy&) = delete;
Int_no_copy(volatile Int_no_copy&) = delete;
Int_no_copy(const volatile Int_no_copy&) = delete;
Int_no_copy(int i) : _i(i) {}
int get_int() { return _i; }
private:
int _i;
};
void just_test_model_FP(void) {
std::vector<Int_no_copy> v;
v.push_back(Int_no_copy(0));
v.erase(v.cbegin());
v.erase(v.cbegin(), v.cend());
const Int_no_copy ci(1);
const Int_no_copy& cr = ci;
v.insert(v.cbegin(), cr);
v.insert(v.cbegin(), std::move(Int_no_copy(2)));
v.emplace(v.cbegin(), 3);
v.insert(v.cbegin(), 42, cr);
int x = v[0].get_int();
std::list<int> l;
std::vector<int> v2(l.begin(), l.end());
v2.insert(v2.cbegin(), l.begin(), l.end());
v2.assign(l.begin(), l.end());
const std::vector<int> v3{1, 2, 3};
int y = v3[0];
int z = v3.at(1);
}
void safe_access3_Good() {
void FP_safe_access3_Good() {
std::vector<int> v;
if (!v.empty()) {
v[0] = 1;
}
}
void safe_access4(std::vector<int> v) {
void FP_safe_access4(std::vector<int> v) {
if (!v.empty()) {
v[0] = 1;
}
@ -118,10 +85,10 @@ void safe_access4(std::vector<int> v) {
void call_safe_access4_Good() {
std::vector<int> v;
safe_access4(v);
FP_safe_access4(v);
}
void safe_access5(std::vector<int> v) {
void FP_safe_access5(std::vector<int> v) {
if (v.empty()) {
} else {
v[0] = 1;
@ -130,7 +97,7 @@ void safe_access5(std::vector<int> v) {
void call_safe_access5_Good() {
std::vector<int> v;
safe_access5(v);
FP_safe_access5(v);
}
void safe_access6(std::vector<int> v) {
@ -143,7 +110,7 @@ void call_safe_access6_Good() {
safe_access6(v);
}
void data_Good() {
void FP_data_Good() {
std::vector<int> v(5);
int* p = v.data();
p[4] = 1;
@ -156,7 +123,7 @@ void data_Bad() {
p[v[4]] = 1;
}
void assert_Good() {
void FP_assert_Good() {
std::vector<int> v;
for (int i = 0; i < 5; i++) {
v.push_back(1);
@ -165,7 +132,7 @@ void assert_Good() {
v[4] = 1;
}
void assert_Good_2(int x) {
void FP_assert_Good_2(int x) {
std::vector<int> v;
for (int i = 0; i < 5; i++) {
v.push_back(1);

@ -8,7 +8,7 @@ TESTS_DIR = ../../..
# use our own clang's standard library so that the tests are uniform across distributions
CLANG_OPTIONS = -x c++ -std=c++1y -isystem$(ROOT_DIR) -c --stdlib=libc++
INFER_OPTIONS = --biabduction-only --ml-buckets cpp --debug-exceptions --project-root $(TESTS_DIR) \
--pmd-xml --report-custom-error --cxx-infer-headers
--pmd-xml --report-custom-error
INFERPRINT_OPTIONS = --issues-tests
SOURCES = \

@ -1,7 +1,3 @@
INFER_MODEL/cpp/include/infer_model/unique_ptr.h, std::operator!=<65d659492edc5cb5>, 1, Abduction_case_not_implemented, no_bucket, ERROR, [start of procedure std::operator!=<65d659492edc5cb5>()]
INFER_MODEL/cpp/include/infer_model/unique_ptr.h, std::operator!=<a91655a1ebb7418b>, 1, Abduction_case_not_implemented, no_bucket, ERROR, [start of procedure std::operator!=<a91655a1ebb7418b>()]
INFER_MODEL/cpp/include/infer_model/unique_ptr.h, std::unique_ptr<int,unique_ptr_with_deleter::Deleter<int>>::__infer_inner_destructor_~unique_ptr, 0, Missing_fld, no_bucket, ERROR, [start of procedure __infer_inner_destructor_~unique_ptr,start of procedure Pointer,return from a call to unique_ptr_with_deleter::Pointer<int>::Pointer,start of procedure Pointer,return from a call to unique_ptr_with_deleter::Pointer<int>::Pointer]
INFER_MODEL/cpp/include/infer_model/unique_ptr.h, std::unique_ptr<int[_*4],unique_ptr_with_deleter::Deleter<int[_*4]>>::__infer_inner_destructor_~unique_ptr, 0, Missing_fld, no_bucket, ERROR, [start of procedure __infer_inner_destructor_~unique_ptr,start of procedure Pointer,return from a call to unique_ptr_with_deleter::Pointer<int[_*4]>::Pointer,start of procedure Pointer,return from a call to unique_ptr_with_deleter::Pointer<int[_*4]>::Pointer]
codetoanalyze/cpp/errors/biabduction/process_splitting_assert.cpp, fail, 2, NULL_DEREFERENCE, B5, ERROR, [start of procedure fail(),Taking true branch]
codetoanalyze/cpp/errors/c_tests/c_bugs.cpp, crash_fgetc, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure crash_fgetc()]
codetoanalyze/cpp/errors/c_tests/c_bugs.cpp, crash_getc, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure crash_getc()]
@ -18,14 +14,22 @@ codetoanalyze/cpp/errors/include_header/header2.h, header2::div0_templ<int>, 1,
codetoanalyze/cpp/errors/memory_leaks/array_leak.cpp, leak, 4, MEMORY_LEAK, CPP, ERROR, [start of procedure leak()]
codetoanalyze/cpp/errors/memory_leaks/object_leak.cpp, object_leak, 0, MEMORY_LEAK, CPP, ERROR, [start of procedure object_leak(),start of procedure Rectangle,return from a call to Rectangle::Rectangle]
codetoanalyze/cpp/errors/memory_leaks/raii_malloc.cpp, memory_leak, 0, MEMORY_LEAK, no_bucket, ERROR, [start of procedure memory_leak()]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe1_bad(),Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe2_bad(),Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe1_bad(),Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe2_bad(),Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::exchange_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::exchange_possible_npe_bad(),Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::is_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::is_zero_possible_npe_bad(),start of procedure A,return from a call to atomic_test::A::A,start of procedure add,return from a call to atomic_test::A::add,start of procedure sub,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is true,return from a call to atomic_test::A::is_zero,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::load_store_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::load_store_possible_npe_bad(),Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::not_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::not_zero_possible_npe_bad(),start of procedure A,return from a call to atomic_test::A::A,start of procedure sub,return from a call to atomic_test::A::sub,start of procedure sub,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A::is_zero,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_strong_impossible_npe1_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_strong_impossible_npe1_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking false branch,Taking false branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_strong_impossible_npe2_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_strong_impossible_npe2_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking false branch,Taking false branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_weak_impossible_npe1_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_weak_impossible_npe1_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking false branch,Taking false branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_weak_impossible_npe2_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_weak_impossible_npe2_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking false branch,Taking false branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_exchange_impossible_npe_ok, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_exchange_impossible_npe_ok(),Skipping atomic: method has no implementation,Skipping exchange: method has no implementation,Taking false branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_is_zero_impossible_npe_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_is_zero_impossible_npe_ok(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A::is_zero,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_load_store_impossible_npe_ok, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_load_store_impossible_npe_ok(),Skipping atomic: method has no implementation,Skipping store: method has no implementation,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_not_zero_impossible_npe_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_not_zero_impossible_npe_ok(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure is_zero,Condition is true,return from a call to atomic_test::A::is_zero,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe1_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe2_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe1_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe2_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking true branch,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::exchange_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::exchange_possible_npe_bad(),Skipping atomic: method has no implementation,Skipping exchange: method has no implementation,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::is_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::is_zero_possible_npe_bad(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is true,return from a call to atomic_test::A::is_zero,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::load_store_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::load_store_possible_npe_bad(),Skipping atomic: method has no implementation,Skipping store: method has no implementation,Taking true branch]
codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::not_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::not_zero_possible_npe_bad(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A::is_zero,Taking true branch]
codetoanalyze/cpp/errors/models/cmp.cpp, operator_eq_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure operator_eq_bad(),start of procedure operator==(),Condition is true,Condition is true,return from a call to operator==,Taking true branch]
codetoanalyze/cpp/errors/models/cmp.cpp, operator_ge_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure operator_ge_bad(),start of procedure operator>=(),start of procedure operator<(),Taking false branch,Taking false branch,Condition is false,return from a call to operator<,Condition is false,return from a call to operator>=,Taking true branch]
codetoanalyze/cpp/errors/models/cmp.cpp, operator_gt_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure operator_gt_bad(),start of procedure operator>(),start of procedure operator<(),Taking false branch,Taking false branch,Condition is true,return from a call to operator<,return from a call to operator>,Taking true branch]
@ -60,16 +64,13 @@ codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_dere
codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_bad(),start of procedure cancellation_test::is_size_zero(),start of procedure begin,return from a call to cancellation_test::Test::begin,start of procedure end,return from a call to cancellation_test::Test::end,Condition is true,return from a call to cancellation_test::is_size_zero,Taking true branch]
codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter2_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch]
codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch]
codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe(),start of procedure npe_added_to_b1::deref_ref()]
codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe_person, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe_person(),start of procedure Person,return from a call to npe_added_to_b1::Person::Person,start of procedure npe_added_to_b1::deref_person()]
codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe_person_bad, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe_person_bad(),start of procedure Person,return from a call to npe_added_to_b1::Person::Person,start of procedure npe_added_to_b1::deref_person()]
codetoanalyze/cpp/errors/npe/null_returned_by_method.cpp, testNullDeref, 3, NULL_DEREFERENCE, B2, ERROR, [start of procedure testNullDeref(),Taking true branch,start of procedure getNull,return from a call to XFactory::getNull]
codetoanalyze/cpp/errors/npe/object_deref.cpp, object_deref::derefNullField, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure object_deref::derefNullField(),start of procedure object_deref::getNull(),return from a call to object_deref::getNull]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_const_skip2_then_split_case_ok, 5, MEMORY_LEAK, CPP, ERROR, [start of procedure FP_const_skip2_then_split_case_ok(),Skipping skip_const2(): method has no implementation,start of procedure test_pointer(),Taking true branch,return from a call to test_pointer]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_const_skip_then_split_case_ok, 6, MEMORY_LEAK, CPP, ERROR, [start of procedure FP_const_skip_then_split_case_ok(),Skipping skip_const(): method has no implementation,start of procedure test_pointer(),Taking true branch,return from a call to test_pointer]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_typedef_skip_then_split_case_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure FP_typedef_skip_then_split_case_ok(),Skipping skip_typedef(): method has no implementation]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_typedef_skip_then_split_case_ok, 4, NULL_DEREFERENCE, B5, ERROR, [start of procedure FP_typedef_skip_then_split_case_ok(),Skipping skip_typedef(): method has no implementation,start of procedure test_pointer(),Taking false branch,return from a call to test_pointer]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, skip_then_split_case_bad, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure skip_then_split_case_bad(),Skipping skip_no_const(): method has no implementation]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, skip_then_split_case_bad, 5, NULL_DEREFERENCE, B5, ERROR, [start of procedure skip_then_split_case_bad(),Skipping skip_no_const(): method has no implementation,start of procedure test_pointer(),Taking false branch,return from a call to test_pointer]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_FP_skip_then_split_case_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_FP_skip_then_split_case_bad(),Skipping ~shared_ptr: method has no implementation,Skipping skip_no_const(): method has no implementation]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_const_skip2_then_split_case_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_const_skip2_then_split_case_ok(),Skipping ~shared_ptr: method has no implementation,Skipping skip_const2(): method has no implementation]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_const_skip_then_split_case_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_const_skip_then_split_case_ok(),Skipping ~shared_ptr: method has no implementation,Skipping skip_const(): method has no implementation]
codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_typedef_skip_then_split_case_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_typedef_skip_then_split_case_ok(),Skipping ~shared_ptr: method has no implementation,Skipping skip_typedef(): method has no implementation]
codetoanalyze/cpp/errors/numeric/min_max.cpp, max_X_inv_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure max_X_inv_div0(),start of procedure X_inv,return from a call to X_inv::X_inv,start of procedure X_inv,return from a call to X_inv::X_inv]
codetoanalyze/cpp/errors/numeric/min_max.cpp, max_int_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure max_int_div0()]
codetoanalyze/cpp/errors/numeric/min_max.cpp, min_X_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure min_X_div0(),start of procedure X,return from a call to X::X,start of procedure X,return from a call to X::X]
@ -78,84 +79,27 @@ codetoanalyze/cpp/errors/overwrite_attribute/main.cpp, testSetIntValue, 3, DIVID
codetoanalyze/cpp/errors/pointers/unintialized.cpp, known_ctor_dangling_bad, 2, DANGLING_POINTER_DEREFERENCE, no_bucket, ERROR, [start of procedure known_ctor_dangling_bad(),start of procedure TestDangling,return from a call to TestDangling::TestDangling]
codetoanalyze/cpp/errors/pointers/unintialized.cpp, uninitialized_dangling_bad, 2, DANGLING_POINTER_DEREFERENCE, no_bucket, ERROR, [start of procedure uninitialized_dangling_bad()]
codetoanalyze/cpp/errors/resource_leaks/raii.cpp, resource_leak, 7, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure resource_leak(),Taking false branch]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const1, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const1()]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const2()]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const3, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const3()]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const4, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const4()]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile1, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile1()]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile2()]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile3, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile3()]
codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile4, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile4()]
codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::deref_after_move_crash, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure deref_after_mode_example::deref_after_move_crash(),start of procedure Person,return from a call to deref_after_mode_example::Person::Person,start of procedure move_age,return from a call to deref_after_mode_example::Person::move_age,start of procedure access_age]
codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::deref_after_move_ok, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure deref_after_mode_example::deref_after_move_ok(),start of procedure Person,return from a call to deref_after_mode_example::Person::Person,start of procedure move_age,return from a call to deref_after_mode_example::Person::move_age,start of procedure ~Person,start of procedure __infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::__infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::~Person]
codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::deref_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure deref_after_mode_example::deref_ok(),start of procedure Person,return from a call to deref_after_mode_example::Person::Person,start of procedure access_age,return from a call to deref_after_mode_example::Person::access_age,start of procedure ~Person,start of procedure __infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::__infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::~Person]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::aliasing_member_null_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::aliasing_member_null_bad(),start of procedure shared_ptr_constructors::aliasing_construct_from_internal(),start of procedure shared_ptr_constructors::internal_null_def(),Skipping shared_ptr_constructors::external_def(): method has no implementation,return from a call to shared_ptr_constructors::internal_null_def,Taking false branch,return from a call to shared_ptr_constructors::aliasing_construct_from_internal]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base1_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base1_null_f1_deref(),start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,start of procedure shared_ptr_constructors::getFromBase1(),return from a call to shared_ptr_constructors::getFromBase1]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base1_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base1_nullptr_deref(),start of procedure shared_ptr_constructors::getFromBase1(),return from a call to shared_ptr_constructors::getFromBase1,start of procedure Base]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base2_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base2_null_f1_deref(),start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,start of procedure shared_ptr_constructors::getFromBase2(),return from a call to shared_ptr_constructors::getFromBase2]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base2_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base2_nullptr_deref(),start of procedure shared_ptr_constructors::getFromBase2(),return from a call to shared_ptr_constructors::getFromBase2,start of procedure Base]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived1_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived1_null_f1_deref(),start of procedure Derived,start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,return from a call to shared_ptr_constructors::Derived::Derived,start of procedure shared_ptr_constructors::getFromDerived1(),return from a call to shared_ptr_constructors::getFromDerived1]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived1_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived1_nullptr_deref(),start of procedure shared_ptr_constructors::getFromDerived1(),return from a call to shared_ptr_constructors::getFromDerived1,start of procedure Base]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived2_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived2_null_f1_deref(),start of procedure Derived,start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,return from a call to shared_ptr_constructors::Derived::Derived,start of procedure shared_ptr_constructors::getFromDerived2(),return from a call to shared_ptr_constructors::getFromDerived2]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived2_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived2_nullptr_deref(),start of procedure shared_ptr_constructors::getFromDerived2(),return from a call to shared_ptr_constructors::getFromDerived2,start of procedure Base]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived3_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived3_null_f1_deref(),start of procedure Derived,start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,return from a call to shared_ptr_constructors::Derived::Derived,start of procedure shared_ptr_constructors::getFromDerived3(),return from a call to shared_ptr_constructors::getFromDerived3]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived3_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived3_nullptr_deref(),start of procedure shared_ptr_constructors::getFromDerived3(),return from a call to shared_ptr_constructors::getFromDerived3,start of procedure Base]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_field_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_field_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_field_deref2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_field_deref2()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_method_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_method_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::nullptr_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::nullptr_ptr_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref2, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref2()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref2, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref2()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref2, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref2()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_ok_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_ok_deref2, 4, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_ok_deref2()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_assign_null_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::shared_ptr_assign_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_assign_null_deref, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::shared_ptr_assign_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_assign_ok_deref, 5, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::shared_ptr_assign_ok_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_copy_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::shared_ptr_copy_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_copy_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::shared_ptr_copy_ok_deref()]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_move_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::shared_ptr_move_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_array_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_array_ptr_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_field_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_field_deref2()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_method_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_method_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::nullptr_array_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::nullptr_array_ptr_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::nullptr_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::nullptr_ptr_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref2()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref2()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref2()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_ok_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_ok_deref2, 4, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_ok_deref2()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_null_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_assign_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_null_deref, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::unique_ptr_assign_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_ok_deref, 5, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_assign_ok_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_copy_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::unique_ptr_copy_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_move_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::unique_ptr_move_null_deref()]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_move_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_move_ok_deref()]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedBaseAssign_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedBaseAssign_bad(),start of procedure weak_ptr_constructors::fromSharedBaseAssign(),return from a call to weak_ptr_constructors::fromSharedBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedBaseConstr_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedBaseConstr_bad(),start of procedure weak_ptr_constructors::fromSharedBaseConstr(),return from a call to weak_ptr_constructors::fromSharedBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedDerivedAssign_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedDerivedAssign_bad(),start of procedure weak_ptr_constructors::fromSharedDerivedAssign(),return from a call to weak_ptr_constructors::fromSharedDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr2_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr2_bad(),start of procedure weak_ptr_constructors::fromSharedDerivedConstr2(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr2,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr_bad(),start of procedure weak_ptr_constructors::fromSharedDerivedConstr(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseAssign_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseAssign_bad(),start of procedure weak_ptr_constructors::fromWeakBaseAssign(),return from a call to weak_ptr_constructors::fromWeakBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseConstr_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseConstr_bad(),start of procedure weak_ptr_constructors::fromWeakBaseConstr(),return from a call to weak_ptr_constructors::fromWeakBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad(),start of procedure weak_ptr_constructors::fromWeakDerivedAssign(),return from a call to weak_ptr_constructors::fromWeakDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad(),start of procedure weak_ptr_constructors::fromWeakDerivedConstr(),return from a call to weak_ptr_constructors::fromWeakDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::empty_weak_lock_returns_null_bad, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_observers::empty_weak_lock_returns_null_bad()]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_after_reset_bad, 5, expired after weak_ptr reset is true, no_bucket, ERROR, [start of procedure weak_ptr_observers::expired_after_reset_bad(),Taking true branch,return from a call to weak_ptr_observers::expired_after_reset_bad]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_after_swap_bad, 6, expired after weak_ptr swap with empty is true, no_bucket, ERROR, [start of procedure weak_ptr_observers::expired_after_swap_bad(),Taking true branch,return from a call to weak_ptr_observers::expired_after_swap_bad]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_empty_bad, 5, expired on empty weak_ptr is true, no_bucket, ERROR, [start of procedure weak_ptr_observers::expired_empty_bad(),Taking true branch,return from a call to weak_ptr_observers::expired_empty_bad]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_means_null_bad, 3, NULL_DEREFERENCE, B2, ERROR, [start of procedure weak_ptr_observers::expired_means_null_bad(),Taking true branch]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::lock_can_be_null_bad, 2, NULL_DEREFERENCE, B2, ERROR, [start of procedure weak_ptr_observers::lock_can_be_null_bad()]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::shared_still_in_scope_good_FP, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_observers::shared_still_in_scope_good_FP()]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::use_count_after_reset_bad, 5, use_count after weak_ptr reset is 0, no_bucket, ERROR, [start of procedure weak_ptr_observers::use_count_after_reset_bad(),Taking true branch,return from a call to weak_ptr_observers::use_count_after_reset_bad]
codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::use_count_empty_bad, 5, use_count on empty weak_ptr is 0, no_bucket, ERROR, [start of procedure weak_ptr_observers::use_count_empty_bad(),Taking true branch,return from a call to weak_ptr_observers::use_count_empty_bad]
codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::Person::Person, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure Person,Skipping unique_ptr<true,_void>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::ERROR_shared_ptr_check_notnull_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure shared_ptr::ERROR_shared_ptr_check_notnull_ok(),Skipping shared_ptr: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::ERROR_shared_ptr_check_null_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure shared_ptr::ERROR_shared_ptr_check_null_ok(),Skipping shared_ptr: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_reset_ptr_null_deref2_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_reset_ptr_null_deref2_bad(),Skipping shared_ptr<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_reset_ptr_null_deref2_bad, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_reset_ptr_null_deref2_bad(),Skipping shared_ptr<int>: method has no implementation,Skipping reset<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_reset_ptr_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_reset_ptr_null_deref_bad(),Skipping shared_ptr<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_shared_ptr_assign_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_shared_ptr_assign_null_deref_bad(),Skipping shared_ptr<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_shared_ptr_move_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_shared_ptr_move_null_deref_bad(),Skipping shared_ptr<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_reset_ptr_deref2_ok, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_reset_ptr_deref2_ok(),Skipping shared_ptr: method has no implementation,Skipping reset: method has no implementation,Skipping reset<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_reset_ptr_deref_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_reset_ptr_deref_ok(),Skipping shared_ptr: method has no implementation,Skipping reset<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_shared_ptr_assign_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_shared_ptr_assign_deref_ok(),Skipping shared_ptr<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_shared_ptr_copy_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_shared_ptr_copy_deref_ok(),Skipping shared_ptr<int>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_FP_reset_ptr_null_deref2_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_FP_reset_ptr_null_deref2_bad(),Skipping unique_ptr<true,_void>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_FP_reset_ptr_null_deref2_bad, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_FP_reset_ptr_null_deref2_bad(),Skipping unique_ptr<true,_void>: method has no implementation,Skipping reset: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_FP_reset_ptr_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_FP_reset_ptr_null_deref_bad(),Skipping unique_ptr<true,_void>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_unique_ptr_assign_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_unique_ptr_assign_null_deref_bad(),Skipping unique_ptr<true,_void>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_unique_ptr_move_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_unique_ptr_move_null_deref_bad(),Skipping unique_ptr<true,_void>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FP_reset_ptr_deref2_ok, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FP_reset_ptr_deref2_ok(),Skipping unique_ptr<true,_void>: method has no implementation,Skipping reset: method has no implementation,Skipping reset: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FP_reset_ptr_deref_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FP_reset_ptr_deref_ok(),Skipping unique_ptr<true,_void>: method has no implementation,Skipping reset: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FP_unique_ptr_move_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FP_unique_ptr_move_deref_ok(),Skipping unique_ptr<true,_void>: method has no implementation]
codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_assign_deref_ok(),Skipping unique_ptr<true,_void>: method has no implementation]
codetoanalyze/cpp/errors/stack_escape/basic.cpp, basic_escape_local_bad, 3, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [start of procedure basic_escape_local_bad(),return from a call to basic_escape_local_bad]
codetoanalyze/cpp/errors/stack_escape/basic.cpp, basic_escape_param_bad, 0, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [start of procedure basic_escape_param_bad(),return from a call to basic_escape_param_bad]
codetoanalyze/cpp/errors/stack_escape/basic.cpp, escape_local_struct_member_bad, 3, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [start of procedure escape_local_struct_member_bad(),start of procedure EscapeTest,return from a call to EscapeTest::EscapeTest,return from a call to escape_local_struct_member_bad]
@ -194,29 +138,22 @@ codetoanalyze/cpp/errors/types/typeid_expr.cpp, template_typeid<Person>, 2, MEMO
codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_double_delete_bad, 3, USE_AFTER_FREE, B1, ERROR, [start of procedure test_double_delete_bad,Skipping Y: method has no implementation]
codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_for_map_delete_ok_FP, 2, USE_AFTER_FREE, B5, ERROR, [start of procedure test_for_map_delete_ok_FP,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation]
codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_for_umap_delete_ok_FP, 2, USE_AFTER_FREE, B5, ERROR, [start of procedure test_for_umap_delete_ok_FP,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation]
codetoanalyze/cpp/errors/vector/access_field_later.cpp, getIntPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getIntPtr()]
codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithCopy, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithCopy()]
codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithCopyPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithCopyPtr()]
codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithoutCopy, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithoutCopy()]
codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithoutCopyPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithoutCopyPtr()]
codetoanalyze/cpp/errors/vector/empty_access.cpp, access_empty, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure access_empty()]
codetoanalyze/cpp/errors/vector/empty_access.cpp, access_empty_back_bad, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure access_empty_back_bad()]
codetoanalyze/cpp/errors/vector/empty_access.cpp, access_empty_front_bad, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure access_empty_front_bad()]
codetoanalyze/cpp/errors/vector/empty_access.cpp, assign_empty, 4, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure assign_empty()]
codetoanalyze/cpp/errors/vector/empty_access.cpp, clear_empty, 3, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure clear_empty()]
codetoanalyze/cpp/errors/vector/empty_access.cpp, copy_empty, 3, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure copy_empty()]
codetoanalyze/cpp/errors/vector/empty_access.cpp, empty_check_access_empty, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure empty_check_access_empty(),Taking true branch]
codetoanalyze/cpp/errors/vector/empty_access.cpp, getter_empty, 0, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getter_empty(),start of procedure get_vector(),Skipping ~vector: method has no implementation,return from a call to get_vector]
codetoanalyze/cpp/errors/vector/empty_access.cpp, size_check0_empty, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure size_check0_empty(),Taking true branch]
codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_by_value_empty, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure vector_as_param_by_value_empty(),start of procedure vector_param_by_value_access(),return from a call to vector_param_by_value_access]
codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_clear, 3, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure vector_as_param_clear(),start of procedure vector_param_clear(),return from a call to vector_param_clear]
codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_empty, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure vector_as_param_empty(),start of procedure vector_param_access(),return from a call to vector_param_access]
codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_by_value_clear_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_by_value_clear_ok(),Skipping vector: method has no implementation,Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_by_value_empty_bad, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_by_value_empty_bad(),Skipping vector: method has no implementation,Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_empty_bad, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_empty_bad(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_nonempty_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_nonempty_ok(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/empty_access.cpp, FN_vector_as_param_clear_bad, 2, Cannot_star, no_bucket, ERROR, [start of procedure FN_vector_as_param_clear_bad(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_access.cpp, iterator_access::possible_npe, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_access::possible_npe(),Skipping ~__wrap_iter: method has no implementation,Loop condition is true. Entering loop body,Taking true branch,Taking true branch]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref1_bad(),start of procedure iterator_compare::is_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::is_empty,Taking true branch]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref2_bad(),start of procedure iterator_compare::not_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::not_empty,Taking true branch]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref1_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::is_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::is_empty,Taking true branch]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref2_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::not_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::not_empty,Taking true branch]
codetoanalyze/cpp/errors/vector/loop.cpp, non_empty_vector_loop_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure non_empty_vector_loop_bad(),Loop condition is true. Entering loop body]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_deref1_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_deref1_bad(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_deref2_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_deref2_bad(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_no_deref1_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_no_deref1_ok(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_no_deref2_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_no_deref2_ok(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_deref1_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_deref1_bad(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_deref2_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_deref2_bad(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_no_deref1_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_no_deref1_ok(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_no_deref2_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_no_deref2_ok(),Skipping vector: method has no implementation]
codetoanalyze/cpp/errors/vector/loop.cpp, FP_empty_vector_loop_ok, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure FP_empty_vector_loop_ok(),Skipping vector: method has no implementation,Loop condition is true. Entering loop body]
codetoanalyze/cpp/errors/vector/loop.cpp, non_empty_vector_loop_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure non_empty_vector_loop_bad(),Skipping vector: method has no implementation,Loop condition is true. Entering loop body]
codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg2_null_deref, 2, NULL_DEREFERENCE, B5, ERROR, [start of procedure derefFirstArg2_null_deref()]
codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg3_null_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure derefFirstArg3_null_deref(),start of procedure derefFirstArg3()]
codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg_null_deref, 2, NULL_DEREFERENCE, B5, ERROR, [start of procedure derefFirstArg_null_deref()]

@ -18,7 +18,7 @@ class A {
bool is_zero() const { return x == 0; }
};
void is_zero_impossible_npe_ok() {
void FP_is_zero_impossible_npe_ok() {
A a;
int* p = nullptr;
a.add();
@ -36,7 +36,7 @@ void is_zero_possible_npe_bad() {
*p = 42;
}
void not_zero_impossible_npe_ok() {
void FP_not_zero_impossible_npe_ok() {
A a;
int* p = nullptr;
a.add();
@ -54,7 +54,7 @@ void not_zero_possible_npe_bad() {
*p = 42;
}
void load_store_impossible_npe_ok() {
void FP_load_store_impossible_npe_ok() {
std::atomic<int> a(0);
int* p = nullptr;
a.store(1);
@ -70,7 +70,7 @@ void load_store_possible_npe_bad() {
*p = 42;
}
void exchange_impossible_npe_ok() {
void FP_exchange_impossible_npe_ok() {
std::atomic<int> a(0);
int* p = nullptr;
int b = a.exchange(1);
@ -86,7 +86,7 @@ void exchange_possible_npe_bad() {
*p = 42;
}
void compare_exchange_weak_impossible_npe1_ok() {
void FP_compare_exchange_weak_impossible_npe1_ok() {
std::atomic<int> a(0);
int b = 0;
int* p = nullptr;
@ -104,7 +104,7 @@ void compare_exchange_weak_possible_npe1_bad() {
*p = 42;
}
void compare_exchange_weak_impossible_npe2_ok() {
void FP_compare_exchange_weak_impossible_npe2_ok() {
std::atomic<int> a(0);
int b = 1;
int* p = nullptr;
@ -122,7 +122,7 @@ void compare_exchange_weak_possible_npe2_bad() {
*p = 42;
}
void compare_exchange_strong_impossible_npe1_ok() {
void FP_compare_exchange_strong_impossible_npe1_ok() {
std::atomic<int> a(0);
int b = 0;
int* p = nullptr;
@ -140,7 +140,7 @@ void compare_exchange_strong_possible_npe1_bad() {
*p = 42;
}
void compare_exchange_strong_impossible_npe2_ok() {
void FP_compare_exchange_strong_impossible_npe2_ok() {
std::atomic<int> a(0);
int b = 1;
int* p = nullptr;

@ -11,7 +11,7 @@ namespace npe_added_to_b1 {
int deref_ref(std::shared_ptr<int>& p) { return *p; }
int causes_npe() {
int FN_shared_ptr_uninit_deref_bad() {
std::shared_ptr<int> x;
return deref_ref(x);
}
@ -24,7 +24,7 @@ class Person {
int deref_person(Person& p) { return *(p.f1); }
int causes_npe_person() {
int causes_npe_person_bad() {
Person p;
return deref_person(p);
}

@ -25,7 +25,7 @@ void test_pointer(const std::shared_ptr<lol>& foo) {
}
}
void skip_then_split_case_bad() {
void ERROR_FP_skip_then_split_case_bad() {
auto foo = std::make_shared<lol>();
skip_no_const(foo); // Infer havocs foo here since it's not const
test_pointer(foo); // this call creates a case split, foo can be null in one
@ -33,7 +33,7 @@ void skip_then_split_case_bad() {
foo->f = 12; // error
}
void FP_const_skip_then_split_case_ok() {
void ERROR_const_skip_then_split_case_ok() {
auto foo = std::make_shared<lol>();
skip_const(foo); // Infer shouldn't havoc foo here since it's const...
test_pointer(foo); /* ...so foo cannot be null here, even if there is an
@ -42,7 +42,7 @@ void FP_const_skip_then_split_case_ok() {
}
// same as above but make sure infer pinpoints the correct const argument
void FP_const_skip2_then_split_case_ok() {
void ERROR_const_skip2_then_split_case_ok() {
auto foo = std::make_shared<lol>();
skip_const2(0, foo, 0, 0);
test_pointer(foo);
@ -50,7 +50,7 @@ void FP_const_skip2_then_split_case_ok() {
}
// same as above but hide the type under a typedef
void FP_typedef_skip_then_split_case_ok() {
void ERROR_typedef_skip_then_split_case_ok() {
auto foo = std::make_shared<lol>();
skip_typedef(foo);
test_pointer(foo);

@ -7,46 +7,46 @@
#include <memory>
int test_volatile1() {
int FN_test_volatile1_bad() {
std::unique_ptr<volatile int> x;
std::unique_ptr<volatile int> y = std::move(x);
return *y;
}
int test_volatile2() {
int FN_test_volatile2_bad() {
std::unique_ptr<volatile int> x;
return *x;
}
int test_volatile3() {
int FN_test_volatile3_bad() {
std::shared_ptr<volatile int> x;
std::shared_ptr<volatile int> y = std::move(x);
return *y;
}
int test_volatile4() {
int FN_test_volatile4_bad() {
std::shared_ptr<volatile int> x;
return *x;
}
int test_const1() {
int FN_test_const1_bad() {
std::unique_ptr<const int> x;
std::unique_ptr<const int> y = std::move(x);
return *y;
}
int test_const2() {
int FN_test_const2_bad() {
std::unique_ptr<const int> x;
return *x;
}
int test_const3() {
int FN_test_const3_bad() {
std::shared_ptr<const int> x;
std::shared_ptr<const int> y = std::move(x);
return *y;
}
int test_const4() {
int FN_test_const4_bad() {
std::shared_ptr<const int> x;
return *x;
}

@ -10,12 +10,14 @@
namespace deref_after_mode_example {
struct Person {
// memory leak FP on Person::Person() because unique_ptr constructor is
// unknown
std::unique_ptr<int> age{new int(35)};
std::unique_ptr<int> move_age() { return std::move(age); }
int access_age() { return *age; }
};
int deref_after_move_crash() {
int FN_deref_after_move_bad() {
Person p;
auto x = p.move_age();
*x;

@ -42,17 +42,27 @@ std::shared_ptr<Base> getFromDerived3(Derived* d) {
return result;
}
void get_from_base1_nullptr_deref() { Base b = *(getFromBase1(nullptr)); }
void FN_get_from_base1_nullptr_deref_bad() {
Base b = *(getFromBase1(nullptr));
}
void get_from_base2_nullptr_deref() { Base b = *(getFromBase2(nullptr)); }
void FN_get_from_base2_nullptr_deref_bad() {
Base b = *(getFromBase2(nullptr));
}
void get_from_derived1_nullptr_deref() { Base b = *(getFromDerived1(nullptr)); }
void FN_get_from_derived1_nullptr_deref_bad() {
Base b = *(getFromDerived1(nullptr));
}
void get_from_derived2_nullptr_deref() { Base b = *(getFromDerived2(nullptr)); }
void FN_get_from_derived2_nullptr_deref_bad() {
Base b = *(getFromDerived2(nullptr));
}
void get_from_derived3_nullptr_deref() { Base b = *(getFromDerived3(nullptr)); }
void FN_get_from_derived3_nullptr_deref_bad() {
Base b = *(getFromDerived3(nullptr));
}
void get_from_base1_null_f1_deref() {
void FN_get_from_base1_null_f1_deref_bad() {
Base b;
int v;
b.f1 = &v;
@ -61,7 +71,7 @@ void get_from_base1_null_f1_deref() {
int r = *(p->f1);
}
void get_from_base2_null_f1_deref() {
void FN_get_from_base2_null_f1_deref_bad() {
Base b;
int v;
b.f1 = &v;
@ -70,7 +80,7 @@ void get_from_base2_null_f1_deref() {
int r = *(p->f1);
}
void get_from_derived1_null_f1_deref() {
void FN_get_from_derived1_null_f1_deref_bad() {
Derived b;
int v;
b.f1 = &v;
@ -79,7 +89,7 @@ void get_from_derived1_null_f1_deref() {
int r = *(p->f1);
}
void get_from_derived2_null_f1_deref() {
void FN_get_from_derived2_null_f1_deref_bad() {
Derived b;
int v;
b.f1 = &v;
@ -88,7 +98,7 @@ void get_from_derived2_null_f1_deref() {
int r = *(p->f1);
}
void get_from_derived3_null_f1_deref() {
void FN_get_from_derived3_null_f1_deref_bad() {
Derived b;
int v;
b.f1 = &v;

@ -24,77 +24,79 @@ int empty_ptr_access() {
return 0;
}
int empty_ptr_deref() {
int FN_empty_ptr_deref_bad() {
std::shared_ptr<int> x;
return *x;
}
int nullptr_ptr_deref() {
int FN_nullptr_ptr_deref_bad() {
std::shared_ptr<int> x(nullptr);
return *x;
}
int empty_ptr_field_deref() {
int FN_empty_ptr_field_deref_bad() {
std::shared_ptr<X> x;
return x.get()->field;
}
int empty_ptr_field_deref2() {
int FN_empty_ptr_field_deref2_bad() {
std::shared_ptr<X> x;
return x->field;
}
int empty_ptr_method_deref() {
int FN_empty_ptr_method_deref_bad() {
std::shared_ptr<X> x;
return x->get();
}
int reset_ptr_null_deref() {
int FN_reset_ptr_null_deref_bad() {
std::shared_ptr<int> x(new int);
x.reset();
return *x;
}
int reset_ptr_null_deref2() {
int FN_reset_ptr_null_deref2_bad() {
std::shared_ptr<int> x(new int);
x.reset(new int);
x.reset();
return *x;
}
int reset_ptr_ok_deref() {
int FP_reset_ptr_deref_ok() {
std::shared_ptr<int> x;
x.reset(new int);
return *x;
}
int reset_ptr_ok_deref2() {
int FP_reset_ptr_deref2_ok() {
std::shared_ptr<int> x;
x.reset();
x.reset(new int);
return *x;
}
int shared_ptr_copy_null_deref() {
int FN_shared_ptr_copy_null_deref_bad() {
std::shared_ptr<int> p1;
std::shared_ptr<int> p2 = p1;
return *p2;
}
int shared_ptr_assign_null_deref() {
int FN_shared_ptr_assign_null_deref_bad() {
std::shared_ptr<int> p1(new int);
std::shared_ptr<int> p2;
p1 = p2;
return *p1;
}
int shared_ptr_copy_ok_deref() {
// FP is a memory leak
int FP_shared_ptr_copy_deref_ok() {
std::shared_ptr<int> p1(new int);
std::shared_ptr<int> p2 = p1;
return *p2;
}
int shared_ptr_assign_ok_deref() {
// FP is a memory leak
int FP_shared_ptr_assign_deref_ok() {
std::shared_ptr<int> p1(new int);
std::shared_ptr<int> p2;
p2 = p1;
@ -102,27 +104,29 @@ int shared_ptr_assign_ok_deref() {
return *p2;
}
int shared_ptr_move_null_deref() {
int FN_shared_ptr_move_null_deref_bad() {
std::shared_ptr<int> p1(new int);
std::shared_ptr<int> p2 = std::move(p1);
return *p1;
}
int shared_ptr_check_null() {
// Cannot_star
int ERROR_shared_ptr_check_null_ok() {
std::shared_ptr<int> p;
if (p == nullptr)
return 1;
return *p;
}
int shared_ptr_check_notnull() {
// Cannot_star
int ERROR_shared_ptr_check_notnull_ok() {
std::shared_ptr<int> p;
if (p != nullptr)
return *p;
return 1;
}
int shared_ptr_check_null2(std::shared_ptr<int> p) {
int shared_ptr_check_null2_ok(std::shared_ptr<int> p) {
if (p == nullptr)
return 1;
return *p;

@ -24,87 +24,88 @@ int empty_ptr_access() {
return 0;
}
int empty_ptr_deref() {
int FN_empty_ptr_deref_bad() {
std::unique_ptr<int> x;
return *x;
}
int empty_array_ptr_deref() {
int FN_empty_array_ptr_deref_bad() {
std::unique_ptr<int[]> x;
return x[0];
}
int nullptr_ptr_deref() {
int FN_nullptr_ptr_deref_bad() {
std::unique_ptr<int> x(nullptr);
return *x;
}
int nullptr_array_ptr_deref() {
int FN_nullptr_array_ptr_deref_bad() {
std::unique_ptr<int[]> x(nullptr);
return x[2];
}
int empty_ptr_field_deref() {
int FN_empty_ptr_field_deref_bad() {
std::unique_ptr<X> x;
return x.get()->field;
}
int empty_ptr_field_deref2() {
int FN_empty_ptr_field_deref2_bad() {
std::unique_ptr<X> x;
return x->field;
}
int empty_ptr_method_deref() {
int FN_empty_ptr_method_deref_bad() {
std::unique_ptr<X> x;
return x->get();
}
int reset_ptr_null_deref() {
// FP is memory leak
int FN_FP_reset_ptr_null_deref_bad() {
std::unique_ptr<int> x(new int);
x.reset();
return *x;
}
int reset_ptr_null_deref2() {
int FN_FP_reset_ptr_null_deref2_bad() {
std::unique_ptr<int> x(new int);
x.reset(new int);
x.reset();
return *x;
}
int reset_ptr_ok_deref() {
int FP_reset_ptr_deref_ok() {
std::unique_ptr<int> x;
x.reset(new int);
return *x;
}
int reset_ptr_ok_deref2() {
int FP_reset_ptr_deref2_ok() {
std::unique_ptr<int> x;
x.reset();
x.reset(new int);
return *x;
}
int unique_ptr_copy_null_deref() {
int FN_unique_ptr_copy_null_deref_bad() {
std::unique_ptr<int> p1;
std::unique_ptr<int> p2 = std::move(p1);
return *p2;
}
int unique_ptr_assign_null_deref() {
int FN_unique_ptr_assign_null_deref_bad() {
std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2;
p1 = std::move(p2);
return *p1;
}
int unique_ptr_move_ok_deref() {
int FP_unique_ptr_move_deref_ok() {
std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2 = std::move(p1);
return *p2;
}
int unique_ptr_assign_ok_deref() {
int unique_ptr_assign_deref_ok() {
std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2;
p2 = std::move(p1);
@ -112,7 +113,7 @@ int unique_ptr_assign_ok_deref() {
return *p2;
}
int unique_ptr_move_null_deref() {
int FN_unique_ptr_move_null_deref_bad() {
std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2 = std::move(p1);
return *p1;

@ -90,28 +90,28 @@ std::shared_ptr<Base> safeGet(std::weak_ptr<Base> p) {
return s;
}
int safeGetFromWeakBaseConstr_bad(int v) {
int FN_safeGetFromWeakBaseConstr_bad(int v) {
auto b = std::make_shared<Base>(&v);
auto s = safeGet(fromWeakBaseConstr(std::weak_ptr<Base>(b)));
b->f1 = nullptr;
return *s->f1;
}
int safeGetFromWeakBaseAssign_bad(int v) {
int FN_safeGetFromWeakBaseAssign_bad(int v) {
auto b = std::make_shared<Base>(&v);
auto s = safeGet(fromWeakBaseAssign(std::weak_ptr<Base>(b)));
b->f1 = nullptr;
return *s->f1;
}
int safeGetFromWeakDerivedConstr_bad(int v) {
int FN_safeGetFromWeakDerivedConstr_bad(int v) {
auto d = std::make_shared<Derived>(&v);
auto s = safeGet(fromWeakDerivedConstr(std::weak_ptr<Derived>(d)));
d->f1 = nullptr;
return *s->f1;
}
int safeGetFromWeakDerivedAssign_bad(int v) {
int FN_safeGetFromWeakDerivedAssign_bad(int v) {
auto d = std::make_shared<Derived>(&v);
auto s = safeGet(fromWeakDerivedAssign(std::weak_ptr<Derived>(d)));
d->f1 = nullptr;
@ -227,7 +227,7 @@ void lock_can_be_null_bad(std::weak_ptr<int>& p) {
int _ = *s.get();
}
int safe_deref_good(std::weak_ptr<int>& p) {
int safe_deref_ok(std::weak_ptr<int>& p) {
if (auto s = p.lock()) {
return *s.get();
}

@ -23,31 +23,31 @@ struct WithoutCopy {
int f2;
};
int getIntPtr(int id, std::vector<int*>& v) {
int getIntPtrOk(int id, std::vector<int*>& v) {
int x = v.size();
int** res = &v[id];
return **res;
}
int getWithCopy(int id, std::vector<WithCopy>& v) {
int getWithCopyOk(int id, std::vector<WithCopy>& v) {
int x = v.size();
WithCopy* res = &v[id];
return res->f1;
}
int getWithCopyPtr(int id, std::vector<WithCopy*>& v) {
int getWithCopyPtrOk(int id, std::vector<WithCopy*>& v) {
int x = v.size();
WithCopy** res = &v[id];
return (*res)->f1;
}
int getWithoutCopy(int id, std::vector<WithoutCopy>& v) {
int getWithoutCopyOk(int id, std::vector<WithoutCopy>& v) {
int x = v.size();
WithoutCopy* res = &v[id];
return res->f1;
}
int getWithoutCopyPtr(int id, std::vector<WithoutCopy*>& v) {
int getWithoutCopyPtrOk(int id, std::vector<WithoutCopy*>& v) {
int x = v.size();
WithoutCopy** res = &v[id];
return (*res)->f1;

@ -7,111 +7,111 @@
#include <vector>
int access_empty() {
int FN_access_empty_bad() {
const std::vector<int> vec;
return vec[0];
}
int access_empty_front_bad() {
int FN_access_empty_front_bad() {
const std::vector<int> vec;
return vec.front();
}
int access_empty_back_bad() {
int FN_access_empty_back_bad() {
const std::vector<int> vec;
return vec.back();
}
int access_nonempty() {
int access_nonempty_ok() {
const std::vector<int> vec(1);
return vec[0];
}
int clear_empty() {
int FN_clear_empty_bad() {
std::vector<int> vec(1);
vec.clear();
return vec[0];
}
int resize0_empty() {
int FN_resize0_empty_bad() {
std::vector<int> vec(1);
vec.resize(0);
return vec[0];
}
int resize1_nonempty() {
int resize1_nonempty_ok() {
std::vector<int> vec;
vec.resize(1);
return vec[0];
}
int resize_n_nonempty(int n) {
int resize_n_nonempty_ok(int n) {
std::vector<int> vec;
vec.resize(n);
return vec[0];
}
int push_back_nonempty() {
int push_back_nonempty_ok() {
std::vector<int> vec;
vec.push_back(1);
return vec[0];
}
int copy_empty() {
int FN_copy_empty_bad() {
std::vector<int> vec1;
std::vector<int> vec2 = vec1;
return vec2[0];
}
int copy_nonempty() {
int copy_nonempty_ok() {
std::vector<int> vec1(10);
std::vector<int> vec2 = vec1;
return vec2[0];
}
int assign_empty() {
int FN_assign_empty_bad() {
std::vector<int> vec1;
std::vector<int> vec2(1);
vec2 = vec1;
return vec2[0];
}
int assign_nonempty() {
int assign_nonempty_ok() {
std::vector<int> vec1(1);
std::vector<int> vec2;
vec2 = vec1;
return vec2[0];
}
int empty_check_nonempty(std::vector<int>& vec) {
int empty_check_nonempty_ok(std::vector<int>& vec) {
if (vec.empty()) {
return 1;
}
return vec[0];
}
int empty_check_nonempty2(std::vector<int>& vec) {
int empty_check_nonempty2_ok(std::vector<int>& vec) {
if (vec.empty()) {
vec.push_back(1);
}
return vec[0];
}
int empty_check_access_empty(std::vector<int>& vec) {
int FN_empty_check_access_empty_bad(std::vector<int>& vec) {
if (vec.empty()) {
return vec[0];
}
return 1;
}
int size_check0_empty(std::vector<int>& vec) {
int FN_size_check0_empty_bad(std::vector<int>& vec) {
if (vec.size() == 0) {
return vec[0];
}
return 1;
}
int size_check1_nonempty() {
int size_check1_nonempty_ok() {
std::vector<int> vec;
if (vec.size() > 0) {
return vec[0];
@ -123,12 +123,14 @@ int vector_param_access(std::vector<int>& v) {
return v.back(); // shouldn't report anything here
}
int vector_as_param_empty() {
// Cannot_star
int ERROR_vector_as_param_empty_bad() {
std::vector<int> v;
return vector_param_access(v);
}
int vector_as_param_nonempty() {
// Cannot_star
int ERROR_vector_as_param_nonempty_ok() {
std::vector<int> v(1);
return vector_param_access(v);
}
@ -137,14 +139,15 @@ int vector_param_by_value_access(std::vector<int> v) {
return v.back(); // shouldn't report anything here
}
int vector_as_param_by_value_empty() {
// Cannot_star
int ERROR_vector_as_param_by_value_empty_bad() {
std::vector<int> v;
return vector_param_by_value_access(v);
}
void vector_param_by_value_clear(std::vector<int> v) { v.clear(); }
int vector_as_param_by_value_clear_no_crash() {
int ERROR_vector_as_param_by_value_clear_ok() {
std::vector<int> v(1);
vector_param_by_value_clear(v);
return v[0];
@ -152,7 +155,8 @@ int vector_as_param_by_value_clear_no_crash() {
void vector_param_clear(std::vector<int>& v) { v.clear(); }
int vector_as_param_clear() {
// Cannot_star
int FN_vector_as_param_clear_bad() {
std::vector<int> v(1);
vector_param_clear(v);
return v[0];
@ -163,4 +167,4 @@ std::vector<int> get_vector() {
return x;
}
int getter_empty() { return get_vector()[0]; }
int FN_getter_empty_bad() { return get_vector()[0]; }

@ -12,56 +12,56 @@ bool is_empty(const std::vector<int>& vec) { return vec.begin() == vec.end(); }
bool not_empty(const std::vector<int>& vec) { return vec.begin() != vec.end(); }
void empty_no_deref1_ok() {
void ERROR_empty_no_deref1_ok() {
int* p = nullptr;
std::vector<int> vec;
if (!is_empty(vec))
*p = 42;
}
void empty_no_deref2_ok() {
void ERROR_empty_no_deref2_ok() {
int* p = nullptr;
std::vector<int> vec;
if (not_empty(vec))
*p = 42;
}
void empty_deref1_bad() {
void ERROR_empty_deref1_bad() {
int* p = nullptr;
std::vector<int> vec;
if (is_empty(vec))
*p = 42;
}
void empty_deref2_bad() {
void ERROR_empty_deref2_bad() {
int* p = nullptr;
std::vector<int> vec;
if (!not_empty(vec))
*p = 42;
}
void not_empty_no_deref1_ok() {
void ERROR_not_empty_no_deref1_ok() {
int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4};
if (is_empty(vec))
*p = 42;
}
void not_empty_no_deref2_ok() {
void ERROR_not_empty_no_deref2_ok() {
int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4};
if (!not_empty(vec))
*p = 42;
}
void not_empty_deref1_bad() {
void ERROR_not_empty_deref1_bad() {
int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4};
if (!is_empty(vec))
*p = 42;
}
void not_empty_deref2_bad() {
void ERROR_not_empty_deref2_bad() {
int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4};
if (not_empty(vec))

@ -31,7 +31,7 @@ void iterator_for_access_ok(std::vector<int>& vec) {
}
}
void empty_vector_loop_ok() {
void FP_empty_vector_loop_ok() {
std::vector<int> vec;
int* ptr = nullptr;
for (const auto& elem : vec) {

@ -1,11 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include <vector>
#if defined(_LIBCPP_VECTOR) || defined(_GLIBCXX_VECTOR)
#error "infer should use models headers"
#endif

@ -6,7 +6,7 @@
TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem
CLANG_OPTIONS = -x c++ -std=c++14 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c
CLANG_OPTIONS = -x c++ -std=c++14 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c
INFER_OPTIONS = --liveness-only --ml-buckets cpp --debug-exceptions --project-root $(TESTS_DIR)
INFERPRINT_OPTIONS = --issues-tests

@ -508,9 +508,8 @@ struct A {
int f : 4;
};
int decltype_read_ok_FP(int x) {
A a; // reports here as frontend forgets the expression used in decltype below
// a solution would be to annotate with __unused__ (T26148700)
int decltype_read_ok(int x) {
A a;
decltype(a.f) i;
return x + i;
}

@ -8,7 +8,6 @@ codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_store_before_captu
codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_struct_no_destructor_bad, 0, DEAD_STORE, no_bucket, ERROR, [Write of unused value]
codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_struct_rvalue_ref_bad, 0, DEAD_STORE, no_bucket, ERROR, [Write of unused value]
codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_then_live_bad, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value]
codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::decltype_read_ok_FP, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value]
codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::easy_bad, 0, DEAD_STORE, no_bucket, ERROR, [Write of unused value]
codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::init_capture_no_call_bad, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value]
codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::init_capture_reassign_bad, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value]

@ -5,14 +5,16 @@
* LICENSE file in the root directory of this source tree.
*/
// header required by TranslateAsPtr class. It's not in common header search
// path when running clang without infer (clang wrappers add it)
// Add -isystem '/path/to/infer/repo' to clang invocation to work around
// compilation problem
#include <infer/models/cpp/include/infer_model/infer_traits.h>
/* Test for passing function attributes to infer via annotate attribute */
#define INFER_MODEL_AS_DEREF_FIRST_ARG \
__attribute__((annotate("__infer_replace_with_deref_first_arg"))) {}
namespace infer_traits {
template <class T>
class TranslateAsType {};
} // namespace infer_traits
// basic test of C function with __infer_replace_with_deref_first_arg attribute
int derefFirstArg(int* a, int* b) INFER_MODEL_AS_DEREF_FIRST_ARG;

@ -14,7 +14,7 @@ digraph cfg {
"derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_2" [label="2: Exit derefFirstArg2 \n " color=yellow style=filled]
"derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_3" [label="3: Return Stmt \n n$0=*&b:int* [line 24, column 11]\n n$1=*n$0:int [line 24, column 10]\n *&return:int=n$1 [line 24, column 3]\n NULLIFY(&b); [line 24, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 24, column 3]\n APPLY_ABSTRACTION; [line 24, column 3]\n " shape="box"]
"derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_3" [label="3: Return Stmt \n n$0=*&b:int* [line 26, column 11]\n n$1=*n$0:int [line 26, column 10]\n *&return:int=n$1 [line 26, column 3]\n NULLIFY(&b); [line 26, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 26, column 3]\n APPLY_ABSTRACTION; [line 26, column 3]\n " shape="box"]
"derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_3" -> "derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_2" ;
@ -25,11 +25,11 @@ digraph cfg {
"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_2" [label="2: Exit derefFirstArg2_null_deref \n " color=yellow style=filled]
"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" [label="3: Return Stmt \n n$0=*null:int [line 47, column 10]\n *&return:int=n$0 [line 47, column 3]\n EXIT_SCOPE(n$0); [line 47, column 3]\n APPLY_ABSTRACTION; [line 47, column 3]\n " shape="box"]
"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" [label="3: Return Stmt \n n$0=*null:int [line 49, column 10]\n *&return:int=n$0 [line 49, column 3]\n EXIT_SCOPE(n$0); [line 49, column 3]\n APPLY_ABSTRACTION; [line 49, column 3]\n " shape="box"]
"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" -> "derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_2" ;
"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 46, column 3]\n *&a:int=0 [line 46, column 3]\n NULLIFY(&a); [line 46, column 3]\n EXIT_SCOPE(a); [line 46, column 3]\n " shape="box"]
"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 48, column 3]\n *&a:int=0 [line 48, column 3]\n NULLIFY(&a); [line 48, column 3]\n EXIT_SCOPE(a); [line 48, column 3]\n " shape="box"]
"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_4" -> "derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" ;
@ -40,11 +40,11 @@ digraph cfg {
"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_2" [label="2: Exit derefFirstArg2_ok_deref \n " color=yellow style=filled]
"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" [label="3: Return Stmt \n n$0=*&a:int [line 52, column 10]\n *&return:int=n$0 [line 52, column 3]\n NULLIFY(&a); [line 52, column 3]\n EXIT_SCOPE(n$0,a); [line 52, column 3]\n APPLY_ABSTRACTION; [line 52, column 3]\n " shape="box"]
"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" [label="3: Return Stmt \n n$0=*&a:int [line 54, column 10]\n *&return:int=n$0 [line 54, column 3]\n NULLIFY(&a); [line 54, column 3]\n EXIT_SCOPE(n$0,a); [line 54, column 3]\n APPLY_ABSTRACTION; [line 54, column 3]\n " shape="box"]
"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" -> "derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_2" ;
"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 51, column 3]\n *&a:int=0 [line 51, column 3]\n " shape="box"]
"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 53, column 3]\n *&a:int=0 [line 53, column 3]\n " shape="box"]
"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_4" -> "derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" ;
@ -55,7 +55,7 @@ digraph cfg {
"derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_2" [label="2: Exit derefFirstArg3 \n " color=yellow style=filled]
"derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_3" [label="3: Return Stmt \n n$0=*&b:int* [line 31, column 11]\n n$1=*n$0:int [line 31, column 10]\n *&return:int=n$1 [line 31, column 3]\n NULLIFY(&b); [line 31, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 31, column 3]\n APPLY_ABSTRACTION; [line 31, column 3]\n " shape="box"]
"derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_3" [label="3: Return Stmt \n n$0=*&b:int* [line 33, column 11]\n n$1=*n$0:int [line 33, column 10]\n *&return:int=n$1 [line 33, column 3]\n NULLIFY(&b); [line 33, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 33, column 3]\n APPLY_ABSTRACTION; [line 33, column 3]\n " shape="box"]
"derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_3" -> "derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_2" ;
@ -63,14 +63,14 @@ digraph cfg {
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_1" -> "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" ;
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_2" [label="2: Exit derefFirstArg3_null_deref \n NULLIFY(&a); [line 63, column 1]\n " color=yellow style=filled]
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_2" [label="2: Exit derefFirstArg3_null_deref \n NULLIFY(&a); [line 65, column 1]\n " color=yellow style=filled]
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(&a:int*,null:int*) [line 62, column 10]\n *&return:int=n$0 [line 62, column 3]\n EXIT_SCOPE(n$0,a); [line 62, column 3]\n APPLY_ABSTRACTION; [line 62, column 3]\n " shape="box"]
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(&a:int*,null:int*) [line 64, column 10]\n *&return:int=n$0 [line 64, column 3]\n EXIT_SCOPE(n$0,a); [line 64, column 3]\n APPLY_ABSTRACTION; [line 64, column 3]\n " shape="box"]
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" -> "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_2" ;
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 61, column 3]\n *&a:int=0 [line 61, column 3]\n " shape="box"]
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 63, column 3]\n *&a:int=0 [line 63, column 3]\n " shape="box"]
"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" -> "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" ;
@ -78,14 +78,14 @@ digraph cfg {
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_1" -> "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" ;
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_2" [label="2: Exit derefFirstArg3_ok_deref \n NULLIFY(&a); [line 58, column 1]\n " color=yellow style=filled]
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_2" [label="2: Exit derefFirstArg3_ok_deref \n NULLIFY(&a); [line 60, column 1]\n " color=yellow style=filled]
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(null:int*,&a:int*) [line 57, column 10]\n *&return:int=n$0 [line 57, column 3]\n EXIT_SCOPE(n$0,a); [line 57, column 3]\n APPLY_ABSTRACTION; [line 57, column 3]\n " shape="box"]
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(null:int*,&a:int*) [line 59, column 10]\n *&return:int=n$0 [line 59, column 3]\n EXIT_SCOPE(n$0,a); [line 59, column 3]\n APPLY_ABSTRACTION; [line 59, column 3]\n " shape="box"]
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" -> "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_2" ;
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 56, column 3]\n *&a:int=0 [line 56, column 3]\n " shape="box"]
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 58, column 3]\n *&a:int=0 [line 58, column 3]\n " shape="box"]
"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" -> "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" ;
@ -96,11 +96,11 @@ digraph cfg {
"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_2" [label="2: Exit derefFirstArg_null_deref \n " color=yellow style=filled]
"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" [label="3: Return Stmt \n n$0=*null:int [line 37, column 10]\n *&return:int=n$0 [line 37, column 3]\n EXIT_SCOPE(n$0); [line 37, column 3]\n APPLY_ABSTRACTION; [line 37, column 3]\n " shape="box"]
"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" [label="3: Return Stmt \n n$0=*null:int [line 39, column 10]\n *&return:int=n$0 [line 39, column 3]\n EXIT_SCOPE(n$0); [line 39, column 3]\n APPLY_ABSTRACTION; [line 39, column 3]\n " shape="box"]
"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" -> "derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_2" ;
"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 36, column 3]\n *&a:int=0 [line 36, column 3]\n NULLIFY(&a); [line 36, column 3]\n EXIT_SCOPE(a); [line 36, column 3]\n " shape="box"]
"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 38, column 3]\n *&a:int=0 [line 38, column 3]\n NULLIFY(&a); [line 38, column 3]\n EXIT_SCOPE(a); [line 38, column 3]\n " shape="box"]
"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_4" -> "derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" ;
@ -111,11 +111,11 @@ digraph cfg {
"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_2" [label="2: Exit derefFirstArg_ok_deref \n " color=yellow style=filled]
"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" [label="3: Return Stmt \n n$0=*&a:int [line 42, column 10]\n *&return:int=n$0 [line 42, column 3]\n NULLIFY(&a); [line 42, column 3]\n EXIT_SCOPE(n$0,a); [line 42, column 3]\n APPLY_ABSTRACTION; [line 42, column 3]\n " shape="box"]
"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" [label="3: Return Stmt \n n$0=*&a:int [line 44, column 10]\n *&return:int=n$0 [line 44, column 3]\n NULLIFY(&a); [line 44, column 3]\n EXIT_SCOPE(n$0,a); [line 44, column 3]\n APPLY_ABSTRACTION; [line 44, column 3]\n " shape="box"]
"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" -> "derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_2" ;
"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 41, column 3]\n *&a:int=0 [line 41, column 3]\n " shape="box"]
"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 43, column 3]\n *&a:int=0 [line 43, column 3]\n " shape="box"]
"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_4" -> "derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" ;
@ -123,18 +123,18 @@ digraph cfg {
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_1" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_5" ;
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_2" [label="2: Exit getPtr_null_deref1 \n NULLIFY(&t); [line 91, column 1]\n " color=yellow style=filled]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_2" [label="2: Exit getPtr_null_deref1 \n NULLIFY(&t); [line 93, column 1]\n " color=yellow style=filled]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" [label="3: Return Stmt \n _=*&t:int* [line 90, column 11]\n n$1=*&t:int* [line 90, column 11]\n n$2=*n$1:int [line 90, column 10]\n *&return:int=n$2 [line 90, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 90, column 3]\n APPLY_ABSTRACTION; [line 90, column 3]\n " shape="box"]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" [label="3: Return Stmt \n _=*&t:int* [line 92, column 11]\n n$1=*&t:int* [line 92, column 11]\n n$2=*n$1:int [line 92, column 10]\n *&return:int=n$2 [line 92, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 92, column 3]\n APPLY_ABSTRACTION; [line 92, column 3]\n " shape="box"]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_2" ;
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 89, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 89, column 3]\n EXIT_SCOPE(_,n$4); [line 89, column 3]\n " shape="box"]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 91, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 91, column 3]\n EXIT_SCOPE(_,n$4); [line 91, column 3]\n " shape="box"]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_4" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" ;
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 88, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 88, column 23]\n EXIT_SCOPE(n$5); [line 88, column 23]\n " shape="box"]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 90, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 90, column 23]\n EXIT_SCOPE(n$5); [line 90, column 23]\n " shape="box"]
"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_5" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_4" ;
@ -142,18 +142,18 @@ digraph cfg {
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_1" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_5" ;
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_2" [label="2: Exit getPtr_null_deref2 \n NULLIFY(&t); [line 97, column 1]\n " color=yellow style=filled]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_2" [label="2: Exit getPtr_null_deref2 \n NULLIFY(&t); [line 99, column 1]\n " color=yellow style=filled]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" [label="3: Return Stmt \n _=*&t:int* [line 96, column 11]\n n$1=*&t:int* [line 96, column 11]\n n$2=*n$1:int [line 96, column 10]\n *&return:int=n$2 [line 96, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 96, column 3]\n APPLY_ABSTRACTION; [line 96, column 3]\n " shape="box"]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" [label="3: Return Stmt \n _=*&t:int* [line 98, column 11]\n n$1=*&t:int* [line 98, column 11]\n n$2=*n$1:int [line 98, column 10]\n *&return:int=n$2 [line 98, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 98, column 3]\n APPLY_ABSTRACTION; [line 98, column 3]\n " shape="box"]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_2" ;
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 95, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 95, column 3]\n EXIT_SCOPE(_,n$4); [line 95, column 3]\n " shape="box"]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 97, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 97, column 3]\n EXIT_SCOPE(_,n$4); [line 97, column 3]\n " shape="box"]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_4" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" ;
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 94, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 94, column 23]\n EXIT_SCOPE(n$5); [line 94, column 23]\n " shape="box"]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 96, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 96, column 23]\n EXIT_SCOPE(n$5); [line 96, column 23]\n " shape="box"]
"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_5" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_4" ;
@ -161,22 +161,22 @@ digraph cfg {
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_1" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" ;
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_2" [label="2: Exit getPtr_ok_deref \n NULLIFY(&t); [line 104, column 1]\n NULLIFY(&a); [line 104, column 1]\n " color=yellow style=filled]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_2" [label="2: Exit getPtr_ok_deref \n NULLIFY(&a); [line 106, column 1]\n NULLIFY(&t); [line 106, column 1]\n " color=yellow style=filled]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" [label="3: Return Stmt \n _=*&t:int* [line 103, column 11]\n n$1=*&t:int* [line 103, column 11]\n n$2=*n$1:int [line 103, column 10]\n *&return:int=n$2 [line 103, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 103, column 3]\n APPLY_ABSTRACTION; [line 103, column 3]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" [label="3: Return Stmt \n _=*&t:int* [line 105, column 11]\n n$1=*&t:int* [line 105, column 11]\n n$2=*n$1:int [line 105, column 10]\n *&return:int=n$2 [line 105, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 105, column 3]\n APPLY_ABSTRACTION; [line 105, column 3]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_2" ;
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 102, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,&a:int*) [line 102, column 3]\n EXIT_SCOPE(_,n$4,a); [line 102, column 3]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 104, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,&a:int*) [line 104, column 3]\n EXIT_SCOPE(_,n$4,a); [line 104, column 3]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_4" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" ;
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 101, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 101, column 23]\n EXIT_SCOPE(n$5); [line 101, column 23]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 103, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 103, column 23]\n EXIT_SCOPE(n$5); [line 103, column 23]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_5" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_4" ;
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 100, column 3]\n *&a:int=0 [line 100, column 3]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 102, column 3]\n *&a:int=0 [line 102, column 3]\n " shape="box"]
"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_5" ;
@ -184,18 +184,18 @@ digraph cfg {
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_1" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_5" ;
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_2" [label="2: Exit getRef_null_deref1 \n NULLIFY(&t); [line 129, column 1]\n " color=yellow style=filled]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_2" [label="2: Exit getRef_null_deref1 \n NULLIFY(&t); [line 131, column 1]\n " color=yellow style=filled]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" [label="3: Return Stmt \n _=*&t:int* [line 128, column 10]\n n$1=*&t:int* [line 128, column 10]\n n$2=*n$1:int [line 128, column 10]\n *&return:int=n$2 [line 128, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 128, column 3]\n APPLY_ABSTRACTION; [line 128, column 3]\n " shape="box"]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" [label="3: Return Stmt \n _=*&t:int* [line 130, column 10]\n n$1=*&t:int* [line 130, column 10]\n n$2=*n$1:int [line 130, column 10]\n *&return:int=n$2 [line 130, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 130, column 3]\n APPLY_ABSTRACTION; [line 130, column 3]\n " shape="box"]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_2" ;
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 127, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 127, column 3]\n EXIT_SCOPE(_,n$4); [line 127, column 3]\n " shape="box"]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 129, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 129, column 3]\n EXIT_SCOPE(_,n$4); [line 129, column 3]\n " shape="box"]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_4" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" ;
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 126, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 126, column 23]\n EXIT_SCOPE(n$5); [line 126, column 23]\n " shape="box"]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 128, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 128, column 23]\n EXIT_SCOPE(n$5); [line 128, column 23]\n " shape="box"]
"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_5" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_4" ;
@ -203,18 +203,18 @@ digraph cfg {
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_1" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_5" ;
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_2" [label="2: Exit getRef_null_deref2 \n NULLIFY(&t); [line 135, column 1]\n " color=yellow style=filled]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_2" [label="2: Exit getRef_null_deref2 \n NULLIFY(&t); [line 137, column 1]\n " color=yellow style=filled]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" [label="3: Return Stmt \n _=*&t:int* [line 134, column 10]\n n$1=*&t:int* [line 134, column 10]\n n$2=*n$1:int [line 134, column 10]\n *&return:int=n$2 [line 134, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 134, column 3]\n APPLY_ABSTRACTION; [line 134, column 3]\n " shape="box"]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" [label="3: Return Stmt \n _=*&t:int* [line 136, column 10]\n n$1=*&t:int* [line 136, column 10]\n n$2=*n$1:int [line 136, column 10]\n *&return:int=n$2 [line 136, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 136, column 3]\n APPLY_ABSTRACTION; [line 136, column 3]\n " shape="box"]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_2" ;
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 133, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 133, column 3]\n EXIT_SCOPE(_,n$4); [line 133, column 3]\n " shape="box"]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 135, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 135, column 3]\n EXIT_SCOPE(_,n$4); [line 135, column 3]\n " shape="box"]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_4" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" ;
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 132, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 132, column 23]\n EXIT_SCOPE(n$5); [line 132, column 23]\n " shape="box"]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 134, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 134, column 23]\n EXIT_SCOPE(n$5); [line 134, column 23]\n " shape="box"]
"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_5" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_4" ;
@ -222,22 +222,22 @@ digraph cfg {
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_1" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" ;
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_2" [label="2: Exit getRef_ok_deref \n NULLIFY(&a); [line 142, column 1]\n NULLIFY(&t); [line 142, column 1]\n " color=yellow style=filled]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_2" [label="2: Exit getRef_ok_deref \n NULLIFY(&t); [line 144, column 1]\n NULLIFY(&a); [line 144, column 1]\n " color=yellow style=filled]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" [label="3: Return Stmt \n _=*&t:int* [line 141, column 10]\n n$1=*&t:int* [line 141, column 10]\n n$2=*n$1:int [line 141, column 10]\n *&return:int=n$2 [line 141, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 141, column 3]\n APPLY_ABSTRACTION; [line 141, column 3]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" [label="3: Return Stmt \n _=*&t:int* [line 143, column 10]\n n$1=*&t:int* [line 143, column 10]\n n$2=*n$1:int [line 143, column 10]\n *&return:int=n$2 [line 143, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 143, column 3]\n APPLY_ABSTRACTION; [line 143, column 3]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_2" ;
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 140, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,&a:int*) [line 140, column 3]\n EXIT_SCOPE(_,n$4,a); [line 140, column 3]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 142, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,&a:int*) [line 142, column 3]\n EXIT_SCOPE(_,n$4,a); [line 142, column 3]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_4" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" ;
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 139, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 139, column 23]\n EXIT_SCOPE(n$5); [line 139, column 23]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 141, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 141, column 23]\n EXIT_SCOPE(n$5); [line 141, column 23]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_5" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_4" ;
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 138, column 3]\n *&a:int=0 [line 138, column 3]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 140, column 3]\n *&a:int=0 [line 140, column 3]\n " shape="box"]
"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_5" ;
@ -245,18 +245,18 @@ digraph cfg {
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_1" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_5" ;
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_2" [label="2: Exit operator_star_null_deref1 \n NULLIFY(&t); [line 110, column 1]\n " color=yellow style=filled]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_2" [label="2: Exit operator_star_null_deref1 \n NULLIFY(&t); [line 112, column 1]\n " color=yellow style=filled]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" [label="3: Return Stmt \n n$1=*&t:int* [line 109, column 10]\n n$2=*n$1:int [line 109, column 10]\n *&return:int=n$2 [line 109, column 3]\n EXIT_SCOPE(n$1,n$2,t); [line 109, column 3]\n APPLY_ABSTRACTION; [line 109, column 3]\n " shape="box"]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" [label="3: Return Stmt \n n$1=*&t:int* [line 111, column 10]\n n$2=*n$1:int [line 111, column 10]\n *&return:int=n$2 [line 111, column 3]\n EXIT_SCOPE(n$1,n$2,t); [line 111, column 3]\n APPLY_ABSTRACTION; [line 111, column 3]\n " shape="box"]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_2" ;
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 108, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 108, column 3]\n EXIT_SCOPE(_,n$4); [line 108, column 3]\n " shape="box"]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 110, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 110, column 3]\n EXIT_SCOPE(_,n$4); [line 110, column 3]\n " shape="box"]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_4" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" ;
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 107, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 107, column 23]\n EXIT_SCOPE(n$5); [line 107, column 23]\n " shape="box"]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 109, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 109, column 23]\n EXIT_SCOPE(n$5); [line 109, column 23]\n " shape="box"]
"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_5" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_4" ;
@ -264,18 +264,18 @@ digraph cfg {
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_1" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_5" ;
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_2" [label="2: Exit operator_star_null_deref2 \n NULLIFY(&t); [line 116, column 1]\n " color=yellow style=filled]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_2" [label="2: Exit operator_star_null_deref2 \n NULLIFY(&t); [line 118, column 1]\n " color=yellow style=filled]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" [label="3: Return Stmt \n _=*&t:int* [line 115, column 10]\n n$1=*&t:int* [line 115, column 10]\n n$2=*n$1:int [line 115, column 10]\n *&return:int=n$2 [line 115, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 115, column 3]\n APPLY_ABSTRACTION; [line 115, column 3]\n " shape="box"]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" [label="3: Return Stmt \n _=*&t:int* [line 117, column 10]\n n$1=*&t:int* [line 117, column 10]\n n$2=*n$1:int [line 117, column 10]\n *&return:int=n$2 [line 117, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 117, column 3]\n APPLY_ABSTRACTION; [line 117, column 3]\n " shape="box"]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_2" ;
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 114, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 114, column 3]\n EXIT_SCOPE(_,n$4); [line 114, column 3]\n " shape="box"]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 116, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,null:int*) [line 116, column 3]\n EXIT_SCOPE(_,n$4); [line 116, column 3]\n " shape="box"]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_4" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" ;
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 113, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 113, column 23]\n EXIT_SCOPE(n$5); [line 113, column 23]\n " shape="box"]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 115, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 115, column 23]\n EXIT_SCOPE(n$5); [line 115, column 23]\n " shape="box"]
"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_5" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_4" ;
@ -283,18 +283,18 @@ digraph cfg {
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_1" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_5" ;
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_2" [label="2: Exit operator_star_ok_deref \n NULLIFY(&t); [line 123, column 1]\n NULLIFY(&a); [line 123, column 1]\n " color=yellow style=filled]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_2" [label="2: Exit operator_star_ok_deref \n NULLIFY(&a); [line 125, column 1]\n NULLIFY(&t); [line 125, column 1]\n " color=yellow style=filled]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" [label="3: Return Stmt \n _=*&t:int* [line 122, column 10]\n n$1=*&t:int* [line 122, column 10]\n n$2=*n$1:int [line 122, column 10]\n *&return:int=n$2 [line 122, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 122, column 3]\n APPLY_ABSTRACTION; [line 122, column 3]\n " shape="box"]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" [label="3: Return Stmt \n _=*&t:int* [line 124, column 10]\n n$1=*&t:int* [line 124, column 10]\n n$2=*n$1:int [line 124, column 10]\n *&return:int=n$2 [line 124, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 124, column 3]\n APPLY_ABSTRACTION; [line 124, column 3]\n " shape="box"]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_2" ;
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 121, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,&a:int*) [line 121, column 3]\n EXIT_SCOPE(_,n$4,a); [line 121, column 3]\n " shape="box"]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_4" [label="4: Call _fun_TranslateAsPtr<int>::setPtr \n _=*&t:int* [line 123, column 3]\n n$4=_fun_TranslateAsPtr<int>::setPtr(&t:int*&,&a:int*) [line 123, column 3]\n EXIT_SCOPE(_,n$4,a); [line 123, column 3]\n " shape="box"]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_4" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" ;
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 120, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 120, column 23]\n EXIT_SCOPE(n$5); [line 120, column 23]\n " shape="box"]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 122, column 3]\n n$5=_fun_TranslateAsPtr<int>::TranslateAsPtr(&t:int**,null:int*) [line 122, column 23]\n EXIT_SCOPE(n$5); [line 122, column 23]\n " shape="box"]
"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_5" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_4" ;
@ -312,7 +312,7 @@ digraph cfg {
"setPtr#TranslateAsPtr<int>#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_2" [label="2: Exit TranslateAsPtr<int>::setPtr \n " color=yellow style=filled]
"setPtr#TranslateAsPtr<int>#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:int** [line 84, column 34]\n n$1=*&v:int* [line 84, column 43]\n *n$0:void*=n$1 [line 84, column 23]\n NULLIFY(&v); [line 84, column 23]\n NULLIFY(&this); [line 84, column 23]\n EXIT_SCOPE(n$0,n$1,v,this); [line 84, column 23]\n APPLY_ABSTRACTION; [line 84, column 23]\n " shape="box"]
"setPtr#TranslateAsPtr<int>#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:int** [line 86, column 34]\n n$1=*&v:int* [line 86, column 43]\n *n$0:void*=n$1 [line 86, column 23]\n NULLIFY(&v); [line 86, column 23]\n NULLIFY(&this); [line 86, column 23]\n EXIT_SCOPE(n$0,n$1,v,this); [line 86, column 23]\n APPLY_ABSTRACTION; [line 86, column 23]\n " shape="box"]
"setPtr#TranslateAsPtr<int>#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_3" -> "setPtr#TranslateAsPtr<int>#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_2" ;
@ -351,7 +351,7 @@ digraph cfg {
"TranslateAsPtr#TranslateAsPtr<int>#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_2" [label="2: Exit TranslateAsPtr<int>::TranslateAsPtr \n " color=yellow style=filled]
"TranslateAsPtr#TranslateAsPtr<int>#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_3" [label="3: Call _fun_TranslateAsPtr<int>::setPtr \n n$0=*&this:int** [line 74, column 36]\n _=*n$0:int* [line 74, column 36]\n n$2=*&t:int* [line 74, column 43]\n n$3=_fun_TranslateAsPtr<int>::setPtr(n$0:int**,n$2:int*) [line 74, column 36]\n NULLIFY(&t); [line 74, column 36]\n NULLIFY(&this); [line 74, column 36]\n EXIT_SCOPE(_,n$0,n$2,n$3,t,this); [line 74, column 36]\n APPLY_ABSTRACTION; [line 74, column 36]\n " shape="box"]
"TranslateAsPtr#TranslateAsPtr<int>#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_3" [label="3: Call _fun_TranslateAsPtr<int>::setPtr \n n$0=*&this:int** [line 76, column 36]\n _=*n$0:int* [line 76, column 36]\n n$2=*&t:int* [line 76, column 43]\n n$3=_fun_TranslateAsPtr<int>::setPtr(n$0:int**,n$2:int*) [line 76, column 36]\n NULLIFY(&t); [line 76, column 36]\n NULLIFY(&this); [line 76, column 36]\n EXIT_SCOPE(_,n$0,n$2,n$3,t,this); [line 76, column 36]\n APPLY_ABSTRACTION; [line 76, column 36]\n " shape="box"]
"TranslateAsPtr#TranslateAsPtr<int>#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_3" -> "TranslateAsPtr#TranslateAsPtr<int>#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_2" ;

@ -6,8 +6,8 @@
TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem
CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c
INFER_OPTIONS = --siof-only --cxx-infer-headers --debug-exceptions --project-root $(TESTS_DIR)
CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c
INFER_OPTIONS = --siof-only --siof-check-iostreams --debug-exceptions --project-root $(TESTS_DIR)
INFERPRINT_OPTIONS = --issues-tests
SOURCES = \

@ -4,8 +4,11 @@ codetoanalyze/cpp/siof/siof/duplicate_reports.cpp, __infer_globals_initializer_m
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_X::static_pod_accesses_non_pod_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of X::static_pod_accesses_non_pod_bad,call to access_to_non_pod,access to global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_X::static_pod_accesses_non_pod_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of X::static_pod_accesses_non_pod_bad,call to access_to_non_pod,access to some_other_global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object2_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object2_bad,call to access_to_non_pod,access to global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object2_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object2_bad,call to SomeOtherNonPODObject::SomeOtherNonPODObject,call to safe_streams,access to std::cout|]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object2_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object2_bad,call to access_to_non_pod,access to some_other_global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object3_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object3_bad,call to access_to_templated_non_pod,access to global_object3|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object3_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object3_bad,call to SomeOtherNonPODObject::SomeOtherNonPODObject,call to safe_streams,access to std::cout|]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object4_good, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object4_good,call to SomeOtherNonPODObject::SomeOtherNonPODObject,call to safe_streams,access to std::cout|]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object_bad,call to SomeOtherNonPODObject::SomeOtherNonPODObject,access to extern_global_object|]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_initWithGlobal_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of initWithGlobal_bad,call to getGlobalNonPOD,access to global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp]
codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_initWithGlobal_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of initWithGlobal_bad,call to getGlobalNonPOD,access to some_other_global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp]

@ -6,7 +6,7 @@
TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem
CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c
CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c
INFER_OPTIONS = --uninit-only --debug-exceptions --project-root $(TESTS_DIR)
INFERPRINT_OPTIONS = --issues-tests

Loading…
Cancel
Save