[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" -- $(MKDIR_P) '$(DESTDIR)$(libdir)'/infer/\$$1" --
test -d '$(DESTDIR)$(libdir)/infer/infer/lib/clang_wrappers/' || \ test -d '$(DESTDIR)$(libdir)/infer/infer/lib/clang_wrappers/' || \
$(MKDIR_P) '$(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/' || \ test -d '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/' || \
$(MKDIR_P) '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/' $(MKDIR_P) '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/'
test -d '$(DESTDIR)$(libdir)/infer/infer/etc/' || \ test -d '$(DESTDIR)$(libdir)/infer/infer/etc/' || \
@ -621,8 +618,6 @@ ifeq ($(BUILD_C_ANALYZERS),yes)
$(LN_S) ../../bin/infer '$(notdir $(cc))';)) $(LN_S) ../../bin/infer '$(notdir $(cc))';))
find infer/lib/specs/* -print0 | xargs -0 -I \{\} \ find infer/lib/specs/* -print0 | xargs -0 -I \{\} \
$(INSTALL_DATA) -C \{\} '$(DESTDIR)$(libdir)'/infer/\{\} $(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' \ $(INSTALL_DATA) -C 'infer/lib/linter_rules/linters.al' \
'$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/linters.al' '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/linters.al'
$(INSTALL_DATA) -C 'infer/etc/clang_ast.dict' \ $(INSTALL_DATA) -C 'infer/etc/clang_ast.dict' \

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

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

@ -217,12 +217,6 @@ CLANG OPTIONS
--no-cxx --no-cxx
Deactivates: Analyze C++ methods (Conversely: --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 --dump-duplicate-symbols
Activates: Dump all symbols with the same name that are defined in Activates: Dump all symbols with the same name that are defined in
more than one file. (Conversely: --no-dump-duplicate-symbols) more than one file. (Conversely: --no-dump-duplicate-symbols)

@ -259,12 +259,6 @@ OPTIONS
Deactivates: Analyze C++ methods (Conversely: --cxx) Deactivates: Analyze C++ methods (Conversely: --cxx)
See also infer-capture(1). 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 --cxx-scope-guards json
Specify scope guard classes that can be read only by destructors Specify scope guard classes that can be read only by destructors
without being reported as dead stores. See also infer-analyze(1). without being reported as dead stores. See also infer-analyze(1).
@ -988,12 +982,9 @@ OPTIONS
--siof-check-iostreams --siof-check-iostreams
Activates: Do not assume that iostreams (cout, cerr, ...) are Activates: Do not assume that iostreams (cout, cerr, ...) are
always initialized. The default is to assume they are always always initialized. The default is to assume they are always
initialized when --cxx-infer-headers is false to avoid false initialized to avoid false positives. However, if your program
positives due to lack of models of the proper initialization of io compiles against a recent libstdc++ then it is safe to turn this
streams. However, if your program compiles against a recent option on. (Conversely: --no-siof-check-iostreams) See also infer-analyze(1).
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).
--siof-only --siof-only
Activates: Enable --siof and disable all other checkers Activates: Enable --siof and disable all other checkers

@ -259,12 +259,6 @@ OPTIONS
Deactivates: Analyze C++ methods (Conversely: --cxx) Deactivates: Analyze C++ methods (Conversely: --cxx)
See also infer-capture(1). 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 --cxx-scope-guards json
Specify scope guard classes that can be read only by destructors Specify scope guard classes that can be read only by destructors
without being reported as dead stores. See also infer-analyze(1). without being reported as dead stores. See also infer-analyze(1).
@ -988,12 +982,9 @@ OPTIONS
--siof-check-iostreams --siof-check-iostreams
Activates: Do not assume that iostreams (cout, cerr, ...) are Activates: Do not assume that iostreams (cout, cerr, ...) are
always initialized. The default is to assume they are always always initialized. The default is to assume they are always
initialized when --cxx-infer-headers is false to avoid false initialized to avoid false positives. However, if your program
positives due to lack of models of the proper initialization of io compiles against a recent libstdc++ then it is safe to turn this
streams. However, if your program compiles against a recent option on. (Conversely: --no-siof-check-iostreams) See also infer-analyze(1).
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).
--siof-only --siof-only
Activates: Enable --siof and disable all other checkers 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) CSOURCES=$(wildcard c_src/*.c)
OBJECTS=$(patsubst %.c,%_cxx.o, $(CSOURCES)) $(patsubst %.cpp,%.o, $(SOURCES)) OBJECTS=$(patsubst %.c,%_cxx.o, $(CSOURCES)) $(patsubst %.cpp,%.o, $(SOURCES))
CXX=clang++ CXX=clang++
CXXFLAGS=-c -w -std=c++11 -isystem../include CXXFLAGS=-c -w -std=c++11
all: $(OBJECTS) all: $(OBJECTS)

@ -420,12 +420,6 @@ let models_src_dir =
(* Normalize the path *) (* 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_dir = lib_dir ^/ "linter_rules"
let linters_def_default_file = linters_def_dir ^/ "linters.al" 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." we are on the current version already."
and cxx_infer_headers, siof_check_iostreams = and siof_check_iostreams =
let siof_check_iostreams = CLOpt.mk_bool ~long:"siof-check-iostreams"
CLOpt.mk_bool ~long:"siof-check-iostreams" ~in_help:InferCommand.[(Analyze, manual_siof)]
~in_help:InferCommand.[(Analyze, manual_siof)] "Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to \
"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 \
assume they are always initialized when $(b,--cxx-infer-headers) is false to avoid false \ compiles against a recent libstdc++ then it is safe to turn this option on."
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 cxx_scope_guards = and cxx_scope_guards =
@ -2491,6 +2472,10 @@ and _ =
and () = CLOpt.mk_set ~parse_mode:CLOpt.Javac version ~deprecated:["version"] ~long:"" `Javac "" 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 *) (** Parse Command Line Args *)
let inferconfig_file = let inferconfig_file =
@ -2821,8 +2806,6 @@ and current_to_previous_script = !current_to_previous_script
and cxx = !cxx and cxx = !cxx
and cxx_infer_headers = !cxx_infer_headers
and cxx_scope_guards = !cxx_scope_guards and cxx_scope_guards = !cxx_scope_guards
and debug_level_analysis = !debug_level_analysis and debug_level_analysis = !debug_level_analysis

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

@ -118,15 +118,6 @@ let is_infer_model source_file =
true 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 let is_under_project_root = function
| Invalid {ml_source_file} -> | Invalid {ml_source_file} ->
L.(die InternalError) "cannot be called with Invalid source file from %s" 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 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). *) 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_infer_model : t -> bool
val is_under_project_root : t -> bool val is_under_project_root : t -> bool

@ -49,8 +49,7 @@ module ConditionTrace = struct
let pp_description : F.formatter -> t -> unit = let pp_description : F.formatter -> t -> unit =
fun fmt ct -> fun fmt ct ->
match ct.cond_trace with match ct.cond_trace with
| Inter {callee_pname} | Inter {callee_pname} ->
when Config.bo_debug >= 1 || not (SourceFile.is_cpp_model ct.issue_location.Location.file) ->
F.fprintf fmt " by call to %a " MF.pp_monospaced (Typ.Procname.to_string 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 *) |> (* -cc1 has to be the first argument or clang will think it runs in driver mode *)
argv_cons "-cc1" 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 |> List.rev_append
[ "-load" [ "-load"
; plugin_path ; 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 map_file_of source_file_in_project loc_end || map_file_of source_file_in_project loc_start
in in
let translate_on_demand = translate_when_used || file_in_project || Config.models_mode 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_end
|| map_file_of equal_current_source loc_start || 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 && map_file_of equal_header_of_current_source loc_start)
|| Config.cxx || Config.cxx
&& decl_trans_context = `Translation && 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 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) capture: $(DOT_FILES)

@ -1,107 +1,5 @@
/* @generated */ /* @generated */
digraph cfg { 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] "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" ; "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_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_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" ; "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; "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" ; "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" ; "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 */ /* @generated */
digraph cfg { 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] "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" ; "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_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_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" ; "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; "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" ; "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" ; "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 */ /* @generated */
digraph cfg { 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] "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" ; "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_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_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" ; "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; "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" ; "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" ; "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 */ /* @generated */
digraph cfg { 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] "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" ; "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_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_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" ; "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
@ -128,7 +26,7 @@ digraph cfg {
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; "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" ; "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" ; "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 = ../../.. TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem # 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 \ INFER_OPTIONS = --bufferoverrun-only --ml-buckets cpp --no-filtering --debug-exceptions \
--project-root $(TESTS_DIR) --report-force-relative-path --project-root $(TESTS_DIR) --report-force-relative-path
INFERPRINT_OPTIONS = --issues-tests INFERPRINT_OPTIONS = --issues-tests

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

@ -54,7 +54,7 @@ std::string do_not_ignore_empty2_Good(const std::string& s) {
return v[0]; 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; std::vector<std::string> v;
folly::split("delimiter", s, v, true); folly::split("delimiter", s, v, true);
return v[0]; 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]] ../../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, 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_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] 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_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_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/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>,Unknown value from: std::vector<int,std::allocator<int>>::size,Binary operation: (1 - [-oo, +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>,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/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, 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/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_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/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] 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, 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::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/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>::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, 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, 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, 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, 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, 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, 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, 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, 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/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/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/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_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] 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/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/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/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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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_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_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, 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, 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_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, 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, 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/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` ] 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 LM<LMDM>* al;
static inline void ral_FP(lt* t, ai a) { static inline void ral_good(lt* t, ai a) {
ASSERT(t); ASSERT(t);
lo o = alo(a); lo o = alo(a);
al->u(*t, o); al->u(*t, o);
@ -138,5 +138,5 @@ static void am_Good_FP(im* it) {
const ai a = aft(ch->i1); const ai a = aft(ch->i1);
lt at; lt at;
gal_FP(&at, a); 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; v[n] = 1;
} }
void constructor_Good() { void FP_constructor_Good() {
std::vector<int> v(1); std::vector<int> v(1);
v[0] = 2; v[0] = 2;
} }
void push_back_Good() { void FP_push_back_Good() {
std::vector<int> v; std::vector<int> v;
v.push_back(1); v.push_back(1);
v[0] = 2; v[0] = 2;
@ -30,7 +30,7 @@ void push_back_Bad() {
v[1] = 2; v[1] = 2;
} }
void reserve_Good() { void FP_reserve_Good() {
std::vector<int> v; std::vector<int> v;
v.reserve(42); v.reserve(42);
v.push_back(1); v.push_back(1);
@ -43,7 +43,7 @@ void reserve_Bad() {
v[0] = 2; v[0] = 2;
} }
void safe_access(std::vector<int> v) { void FP_safe_access(std::vector<int> v) {
if (v.size() >= 10) { if (v.size() >= 10) {
v[9] = 1; v[9] = 1;
} }
@ -51,10 +51,10 @@ void safe_access(std::vector<int> v) {
void call_safe_access_Good() { void call_safe_access_Good() {
std::vector<int> v(5, 0); 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()) { if (v.empty()) {
return; return;
} }
@ -67,50 +67,17 @@ void safe_access2(std::vector<int> v) {
void call_safe_access2_Good() { void call_safe_access2_Good() {
std::vector<int> v; std::vector<int> v;
safe_access2(v); FP_safe_access2(v);
} }
struct Int_no_copy { void FP_safe_access3_Good() {
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() {
std::vector<int> v; std::vector<int> v;
if (!v.empty()) { if (!v.empty()) {
v[0] = 1; v[0] = 1;
} }
} }
void safe_access4(std::vector<int> v) { void FP_safe_access4(std::vector<int> v) {
if (!v.empty()) { if (!v.empty()) {
v[0] = 1; v[0] = 1;
} }
@ -118,10 +85,10 @@ void safe_access4(std::vector<int> v) {
void call_safe_access4_Good() { void call_safe_access4_Good() {
std::vector<int> v; 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()) { if (v.empty()) {
} else { } else {
v[0] = 1; v[0] = 1;
@ -130,7 +97,7 @@ void safe_access5(std::vector<int> v) {
void call_safe_access5_Good() { void call_safe_access5_Good() {
std::vector<int> v; std::vector<int> v;
safe_access5(v); FP_safe_access5(v);
} }
void safe_access6(std::vector<int> v) { void safe_access6(std::vector<int> v) {
@ -143,7 +110,7 @@ void call_safe_access6_Good() {
safe_access6(v); safe_access6(v);
} }
void data_Good() { void FP_data_Good() {
std::vector<int> v(5); std::vector<int> v(5);
int* p = v.data(); int* p = v.data();
p[4] = 1; p[4] = 1;
@ -156,7 +123,7 @@ void data_Bad() {
p[v[4]] = 1; p[v[4]] = 1;
} }
void assert_Good() { void FP_assert_Good() {
std::vector<int> v; std::vector<int> v;
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
v.push_back(1); v.push_back(1);
@ -165,7 +132,7 @@ void assert_Good() {
v[4] = 1; v[4] = 1;
} }
void assert_Good_2(int x) { void FP_assert_Good_2(int x) {
std::vector<int> v; std::vector<int> v;
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
v.push_back(1); 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 # 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++ 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) \ 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 INFERPRINT_OPTIONS = --issues-tests
SOURCES = \ 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/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_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()] 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/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/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/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::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::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::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::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::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::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::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::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::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::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::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::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::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::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_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_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_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] 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_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_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/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_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/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/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/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/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, 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, 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, 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, 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, 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, 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, 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/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/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_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, 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] 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, 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/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/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/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/const_volatile_type.cpp, test_const2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const2()] 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/const_volatile_type.cpp, test_const3, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const3()] 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/const_volatile_type.cpp, test_const4, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const4()] 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/const_volatile_type.cpp, test_volatile1, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile1()] 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/const_volatile_type.cpp, test_volatile2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile2()] 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/const_volatile_type.cpp, test_volatile3, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile3()] 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/const_volatile_type.cpp, test_volatile4, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile4()] 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/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/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/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/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/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_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_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_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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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_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, 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] 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_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_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/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/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/access_field_later.cpp, getWithCopy, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithCopy()] 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/access_field_later.cpp, getWithCopyPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithCopyPtr()] 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/access_field_later.cpp, getWithoutCopy, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithoutCopy()] 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/access_field_later.cpp, getWithoutCopyPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithoutCopyPtr()] 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/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/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_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::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::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::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::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::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::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/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/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_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, 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, 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()] 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; } bool is_zero() const { return x == 0; }
}; };
void is_zero_impossible_npe_ok() { void FP_is_zero_impossible_npe_ok() {
A a; A a;
int* p = nullptr; int* p = nullptr;
a.add(); a.add();
@ -36,7 +36,7 @@ void is_zero_possible_npe_bad() {
*p = 42; *p = 42;
} }
void not_zero_impossible_npe_ok() { void FP_not_zero_impossible_npe_ok() {
A a; A a;
int* p = nullptr; int* p = nullptr;
a.add(); a.add();
@ -54,7 +54,7 @@ void not_zero_possible_npe_bad() {
*p = 42; *p = 42;
} }
void load_store_impossible_npe_ok() { void FP_load_store_impossible_npe_ok() {
std::atomic<int> a(0); std::atomic<int> a(0);
int* p = nullptr; int* p = nullptr;
a.store(1); a.store(1);
@ -70,7 +70,7 @@ void load_store_possible_npe_bad() {
*p = 42; *p = 42;
} }
void exchange_impossible_npe_ok() { void FP_exchange_impossible_npe_ok() {
std::atomic<int> a(0); std::atomic<int> a(0);
int* p = nullptr; int* p = nullptr;
int b = a.exchange(1); int b = a.exchange(1);
@ -86,7 +86,7 @@ void exchange_possible_npe_bad() {
*p = 42; *p = 42;
} }
void compare_exchange_weak_impossible_npe1_ok() { void FP_compare_exchange_weak_impossible_npe1_ok() {
std::atomic<int> a(0); std::atomic<int> a(0);
int b = 0; int b = 0;
int* p = nullptr; int* p = nullptr;
@ -104,7 +104,7 @@ void compare_exchange_weak_possible_npe1_bad() {
*p = 42; *p = 42;
} }
void compare_exchange_weak_impossible_npe2_ok() { void FP_compare_exchange_weak_impossible_npe2_ok() {
std::atomic<int> a(0); std::atomic<int> a(0);
int b = 1; int b = 1;
int* p = nullptr; int* p = nullptr;
@ -122,7 +122,7 @@ void compare_exchange_weak_possible_npe2_bad() {
*p = 42; *p = 42;
} }
void compare_exchange_strong_impossible_npe1_ok() { void FP_compare_exchange_strong_impossible_npe1_ok() {
std::atomic<int> a(0); std::atomic<int> a(0);
int b = 0; int b = 0;
int* p = nullptr; int* p = nullptr;
@ -140,7 +140,7 @@ void compare_exchange_strong_possible_npe1_bad() {
*p = 42; *p = 42;
} }
void compare_exchange_strong_impossible_npe2_ok() { void FP_compare_exchange_strong_impossible_npe2_ok() {
std::atomic<int> a(0); std::atomic<int> a(0);
int b = 1; int b = 1;
int* p = nullptr; int* p = nullptr;

@ -11,7 +11,7 @@ namespace npe_added_to_b1 {
int deref_ref(std::shared_ptr<int>& p) { return *p; } 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; std::shared_ptr<int> x;
return deref_ref(x); return deref_ref(x);
} }
@ -24,7 +24,7 @@ class Person {
int deref_person(Person& p) { return *(p.f1); } int deref_person(Person& p) { return *(p.f1); }
int causes_npe_person() { int causes_npe_person_bad() {
Person p; Person p;
return deref_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>(); auto foo = std::make_shared<lol>();
skip_no_const(foo); // Infer havocs foo here since it's not const 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 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 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>(); auto foo = std::make_shared<lol>();
skip_const(foo); // Infer shouldn't havoc foo here since it's const... 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 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 // 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>(); auto foo = std::make_shared<lol>();
skip_const2(0, foo, 0, 0); skip_const2(0, foo, 0, 0);
test_pointer(foo); 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 // 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>(); auto foo = std::make_shared<lol>();
skip_typedef(foo); skip_typedef(foo);
test_pointer(foo); test_pointer(foo);

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

@ -10,12 +10,14 @@
namespace deref_after_mode_example { namespace deref_after_mode_example {
struct Person { 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> age{new int(35)};
std::unique_ptr<int> move_age() { return std::move(age); } std::unique_ptr<int> move_age() { return std::move(age); }
int access_age() { return *age; } int access_age() { return *age; }
}; };
int deref_after_move_crash() { int FN_deref_after_move_bad() {
Person p; Person p;
auto x = p.move_age(); auto x = p.move_age();
*x; *x;

@ -42,17 +42,27 @@ std::shared_ptr<Base> getFromDerived3(Derived* d) {
return result; 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; Base b;
int v; int v;
b.f1 = &v; b.f1 = &v;
@ -61,7 +71,7 @@ void get_from_base1_null_f1_deref() {
int r = *(p->f1); int r = *(p->f1);
} }
void get_from_base2_null_f1_deref() { void FN_get_from_base2_null_f1_deref_bad() {
Base b; Base b;
int v; int v;
b.f1 = &v; b.f1 = &v;
@ -70,7 +80,7 @@ void get_from_base2_null_f1_deref() {
int r = *(p->f1); int r = *(p->f1);
} }
void get_from_derived1_null_f1_deref() { void FN_get_from_derived1_null_f1_deref_bad() {
Derived b; Derived b;
int v; int v;
b.f1 = &v; b.f1 = &v;
@ -79,7 +89,7 @@ void get_from_derived1_null_f1_deref() {
int r = *(p->f1); int r = *(p->f1);
} }
void get_from_derived2_null_f1_deref() { void FN_get_from_derived2_null_f1_deref_bad() {
Derived b; Derived b;
int v; int v;
b.f1 = &v; b.f1 = &v;
@ -88,7 +98,7 @@ void get_from_derived2_null_f1_deref() {
int r = *(p->f1); int r = *(p->f1);
} }
void get_from_derived3_null_f1_deref() { void FN_get_from_derived3_null_f1_deref_bad() {
Derived b; Derived b;
int v; int v;
b.f1 = &v; b.f1 = &v;

@ -24,77 +24,79 @@ int empty_ptr_access() {
return 0; return 0;
} }
int empty_ptr_deref() { int FN_empty_ptr_deref_bad() {
std::shared_ptr<int> x; std::shared_ptr<int> x;
return *x; return *x;
} }
int nullptr_ptr_deref() { int FN_nullptr_ptr_deref_bad() {
std::shared_ptr<int> x(nullptr); std::shared_ptr<int> x(nullptr);
return *x; return *x;
} }
int empty_ptr_field_deref() { int FN_empty_ptr_field_deref_bad() {
std::shared_ptr<X> x; std::shared_ptr<X> x;
return x.get()->field; return x.get()->field;
} }
int empty_ptr_field_deref2() { int FN_empty_ptr_field_deref2_bad() {
std::shared_ptr<X> x; std::shared_ptr<X> x;
return x->field; return x->field;
} }
int empty_ptr_method_deref() { int FN_empty_ptr_method_deref_bad() {
std::shared_ptr<X> x; std::shared_ptr<X> x;
return x->get(); return x->get();
} }
int reset_ptr_null_deref() { int FN_reset_ptr_null_deref_bad() {
std::shared_ptr<int> x(new int); std::shared_ptr<int> x(new int);
x.reset(); x.reset();
return *x; return *x;
} }
int reset_ptr_null_deref2() { int FN_reset_ptr_null_deref2_bad() {
std::shared_ptr<int> x(new int); std::shared_ptr<int> x(new int);
x.reset(new int); x.reset(new int);
x.reset(); x.reset();
return *x; return *x;
} }
int reset_ptr_ok_deref() { int FP_reset_ptr_deref_ok() {
std::shared_ptr<int> x; std::shared_ptr<int> x;
x.reset(new int); x.reset(new int);
return *x; return *x;
} }
int reset_ptr_ok_deref2() { int FP_reset_ptr_deref2_ok() {
std::shared_ptr<int> x; std::shared_ptr<int> x;
x.reset(); x.reset();
x.reset(new int); x.reset(new int);
return *x; 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> p1;
std::shared_ptr<int> p2 = p1; std::shared_ptr<int> p2 = p1;
return *p2; 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> p1(new int);
std::shared_ptr<int> p2; std::shared_ptr<int> p2;
p1 = p2; p1 = p2;
return *p1; 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> p1(new int);
std::shared_ptr<int> p2 = p1; std::shared_ptr<int> p2 = p1;
return *p2; 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> p1(new int);
std::shared_ptr<int> p2; std::shared_ptr<int> p2;
p2 = p1; p2 = p1;
@ -102,27 +104,29 @@ int shared_ptr_assign_ok_deref() {
return *p2; 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> p1(new int);
std::shared_ptr<int> p2 = std::move(p1); std::shared_ptr<int> p2 = std::move(p1);
return *p1; return *p1;
} }
int shared_ptr_check_null() { // Cannot_star
int ERROR_shared_ptr_check_null_ok() {
std::shared_ptr<int> p; std::shared_ptr<int> p;
if (p == nullptr) if (p == nullptr)
return 1; return 1;
return *p; return *p;
} }
int shared_ptr_check_notnull() { // Cannot_star
int ERROR_shared_ptr_check_notnull_ok() {
std::shared_ptr<int> p; std::shared_ptr<int> p;
if (p != nullptr) if (p != nullptr)
return *p; return *p;
return 1; 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) if (p == nullptr)
return 1; return 1;
return *p; return *p;

@ -24,87 +24,88 @@ int empty_ptr_access() {
return 0; return 0;
} }
int empty_ptr_deref() { int FN_empty_ptr_deref_bad() {
std::unique_ptr<int> x; std::unique_ptr<int> x;
return *x; return *x;
} }
int empty_array_ptr_deref() { int FN_empty_array_ptr_deref_bad() {
std::unique_ptr<int[]> x; std::unique_ptr<int[]> x;
return x[0]; return x[0];
} }
int nullptr_ptr_deref() { int FN_nullptr_ptr_deref_bad() {
std::unique_ptr<int> x(nullptr); std::unique_ptr<int> x(nullptr);
return *x; return *x;
} }
int nullptr_array_ptr_deref() { int FN_nullptr_array_ptr_deref_bad() {
std::unique_ptr<int[]> x(nullptr); std::unique_ptr<int[]> x(nullptr);
return x[2]; return x[2];
} }
int empty_ptr_field_deref() { int FN_empty_ptr_field_deref_bad() {
std::unique_ptr<X> x; std::unique_ptr<X> x;
return x.get()->field; return x.get()->field;
} }
int empty_ptr_field_deref2() { int FN_empty_ptr_field_deref2_bad() {
std::unique_ptr<X> x; std::unique_ptr<X> x;
return x->field; return x->field;
} }
int empty_ptr_method_deref() { int FN_empty_ptr_method_deref_bad() {
std::unique_ptr<X> x; std::unique_ptr<X> x;
return x->get(); 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); std::unique_ptr<int> x(new int);
x.reset(); x.reset();
return *x; return *x;
} }
int reset_ptr_null_deref2() { int FN_FP_reset_ptr_null_deref2_bad() {
std::unique_ptr<int> x(new int); std::unique_ptr<int> x(new int);
x.reset(new int); x.reset(new int);
x.reset(); x.reset();
return *x; return *x;
} }
int reset_ptr_ok_deref() { int FP_reset_ptr_deref_ok() {
std::unique_ptr<int> x; std::unique_ptr<int> x;
x.reset(new int); x.reset(new int);
return *x; return *x;
} }
int reset_ptr_ok_deref2() { int FP_reset_ptr_deref2_ok() {
std::unique_ptr<int> x; std::unique_ptr<int> x;
x.reset(); x.reset();
x.reset(new int); x.reset(new int);
return *x; 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> p1;
std::unique_ptr<int> p2 = std::move(p1); std::unique_ptr<int> p2 = std::move(p1);
return *p2; 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> p1(new int);
std::unique_ptr<int> p2; std::unique_ptr<int> p2;
p1 = std::move(p2); p1 = std::move(p2);
return *p1; 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> p1(new int);
std::unique_ptr<int> p2 = std::move(p1); std::unique_ptr<int> p2 = std::move(p1);
return *p2; 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> p1(new int);
std::unique_ptr<int> p2; std::unique_ptr<int> p2;
p2 = std::move(p1); p2 = std::move(p1);
@ -112,7 +113,7 @@ int unique_ptr_assign_ok_deref() {
return *p2; 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> p1(new int);
std::unique_ptr<int> p2 = std::move(p1); std::unique_ptr<int> p2 = std::move(p1);
return *p1; return *p1;

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

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

@ -7,111 +7,111 @@
#include <vector> #include <vector>
int access_empty() { int FN_access_empty_bad() {
const std::vector<int> vec; const std::vector<int> vec;
return vec[0]; return vec[0];
} }
int access_empty_front_bad() { int FN_access_empty_front_bad() {
const std::vector<int> vec; const std::vector<int> vec;
return vec.front(); return vec.front();
} }
int access_empty_back_bad() { int FN_access_empty_back_bad() {
const std::vector<int> vec; const std::vector<int> vec;
return vec.back(); return vec.back();
} }
int access_nonempty() { int access_nonempty_ok() {
const std::vector<int> vec(1); const std::vector<int> vec(1);
return vec[0]; return vec[0];
} }
int clear_empty() { int FN_clear_empty_bad() {
std::vector<int> vec(1); std::vector<int> vec(1);
vec.clear(); vec.clear();
return vec[0]; return vec[0];
} }
int resize0_empty() { int FN_resize0_empty_bad() {
std::vector<int> vec(1); std::vector<int> vec(1);
vec.resize(0); vec.resize(0);
return vec[0]; return vec[0];
} }
int resize1_nonempty() { int resize1_nonempty_ok() {
std::vector<int> vec; std::vector<int> vec;
vec.resize(1); vec.resize(1);
return vec[0]; return vec[0];
} }
int resize_n_nonempty(int n) { int resize_n_nonempty_ok(int n) {
std::vector<int> vec; std::vector<int> vec;
vec.resize(n); vec.resize(n);
return vec[0]; return vec[0];
} }
int push_back_nonempty() { int push_back_nonempty_ok() {
std::vector<int> vec; std::vector<int> vec;
vec.push_back(1); vec.push_back(1);
return vec[0]; return vec[0];
} }
int copy_empty() { int FN_copy_empty_bad() {
std::vector<int> vec1; std::vector<int> vec1;
std::vector<int> vec2 = vec1; std::vector<int> vec2 = vec1;
return vec2[0]; return vec2[0];
} }
int copy_nonempty() { int copy_nonempty_ok() {
std::vector<int> vec1(10); std::vector<int> vec1(10);
std::vector<int> vec2 = vec1; std::vector<int> vec2 = vec1;
return vec2[0]; return vec2[0];
} }
int assign_empty() { int FN_assign_empty_bad() {
std::vector<int> vec1; std::vector<int> vec1;
std::vector<int> vec2(1); std::vector<int> vec2(1);
vec2 = vec1; vec2 = vec1;
return vec2[0]; return vec2[0];
} }
int assign_nonempty() { int assign_nonempty_ok() {
std::vector<int> vec1(1); std::vector<int> vec1(1);
std::vector<int> vec2; std::vector<int> vec2;
vec2 = vec1; vec2 = vec1;
return vec2[0]; return vec2[0];
} }
int empty_check_nonempty(std::vector<int>& vec) { int empty_check_nonempty_ok(std::vector<int>& vec) {
if (vec.empty()) { if (vec.empty()) {
return 1; return 1;
} }
return vec[0]; return vec[0];
} }
int empty_check_nonempty2(std::vector<int>& vec) { int empty_check_nonempty2_ok(std::vector<int>& vec) {
if (vec.empty()) { if (vec.empty()) {
vec.push_back(1); vec.push_back(1);
} }
return vec[0]; 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()) { if (vec.empty()) {
return vec[0]; return vec[0];
} }
return 1; return 1;
} }
int size_check0_empty(std::vector<int>& vec) { int FN_size_check0_empty_bad(std::vector<int>& vec) {
if (vec.size() == 0) { if (vec.size() == 0) {
return vec[0]; return vec[0];
} }
return 1; return 1;
} }
int size_check1_nonempty() { int size_check1_nonempty_ok() {
std::vector<int> vec; std::vector<int> vec;
if (vec.size() > 0) { if (vec.size() > 0) {
return vec[0]; return vec[0];
@ -123,12 +123,14 @@ int vector_param_access(std::vector<int>& v) {
return v.back(); // shouldn't report anything here 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; std::vector<int> v;
return vector_param_access(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); std::vector<int> v(1);
return vector_param_access(v); 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 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; std::vector<int> v;
return vector_param_by_value_access(v); return vector_param_by_value_access(v);
} }
void vector_param_by_value_clear(std::vector<int> v) { v.clear(); } 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); std::vector<int> v(1);
vector_param_by_value_clear(v); vector_param_by_value_clear(v);
return v[0]; 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(); } 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); std::vector<int> v(1);
vector_param_clear(v); vector_param_clear(v);
return v[0]; return v[0];
@ -163,4 +167,4 @@ std::vector<int> get_vector() {
return x; 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(); } 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; int* p = nullptr;
std::vector<int> vec; std::vector<int> vec;
if (!is_empty(vec)) if (!is_empty(vec))
*p = 42; *p = 42;
} }
void empty_no_deref2_ok() { void ERROR_empty_no_deref2_ok() {
int* p = nullptr; int* p = nullptr;
std::vector<int> vec; std::vector<int> vec;
if (not_empty(vec)) if (not_empty(vec))
*p = 42; *p = 42;
} }
void empty_deref1_bad() { void ERROR_empty_deref1_bad() {
int* p = nullptr; int* p = nullptr;
std::vector<int> vec; std::vector<int> vec;
if (is_empty(vec)) if (is_empty(vec))
*p = 42; *p = 42;
} }
void empty_deref2_bad() { void ERROR_empty_deref2_bad() {
int* p = nullptr; int* p = nullptr;
std::vector<int> vec; std::vector<int> vec;
if (!not_empty(vec)) if (!not_empty(vec))
*p = 42; *p = 42;
} }
void not_empty_no_deref1_ok() { void ERROR_not_empty_no_deref1_ok() {
int* p = nullptr; int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4}; std::vector<int> vec = {1, 2, 3, 4};
if (is_empty(vec)) if (is_empty(vec))
*p = 42; *p = 42;
} }
void not_empty_no_deref2_ok() { void ERROR_not_empty_no_deref2_ok() {
int* p = nullptr; int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4}; std::vector<int> vec = {1, 2, 3, 4};
if (!not_empty(vec)) if (!not_empty(vec))
*p = 42; *p = 42;
} }
void not_empty_deref1_bad() { void ERROR_not_empty_deref1_bad() {
int* p = nullptr; int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4}; std::vector<int> vec = {1, 2, 3, 4};
if (!is_empty(vec)) if (!is_empty(vec))
*p = 42; *p = 42;
} }
void not_empty_deref2_bad() { void ERROR_not_empty_deref2_bad() {
int* p = nullptr; int* p = nullptr;
std::vector<int> vec = {1, 2, 3, 4}; std::vector<int> vec = {1, 2, 3, 4};
if (not_empty(vec)) 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; std::vector<int> vec;
int* ptr = nullptr; int* ptr = nullptr;
for (const auto& elem : vec) { 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 = ../../.. TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem # 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) INFER_OPTIONS = --liveness-only --ml-buckets cpp --debug-exceptions --project-root $(TESTS_DIR)
INFERPRINT_OPTIONS = --issues-tests INFERPRINT_OPTIONS = --issues-tests

@ -508,9 +508,8 @@ struct A {
int f : 4; int f : 4;
}; };
int decltype_read_ok_FP(int x) { int decltype_read_ok(int x) {
A a; // reports here as frontend forgets the expression used in decltype below A a;
// a solution would be to annotate with __unused__ (T26148700)
decltype(a.f) i; decltype(a.f) i;
return x + 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_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_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::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::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_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] 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. * 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 */ /* 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 // 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; 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_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" ; "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_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_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" ; "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_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_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" ; "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_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" ; "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_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_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" ; "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_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_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" ; "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_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_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" ; "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_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_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" ; "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_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_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_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" ; "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_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_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_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" ; "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_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_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_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_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" ; "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_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_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_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" ; "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_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_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_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" ; "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_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_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_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_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" ; "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_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_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_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" ; "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_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_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_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" ; "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_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_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_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" ; "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_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" ; "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_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" ; "TranslateAsPtr#TranslateAsPtr<int>#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_3" -> "TranslateAsPtr#TranslateAsPtr<int>#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_2" ;

@ -6,8 +6,8 @@
TESTS_DIR = ../../.. TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem # 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 = --siof-only --cxx-infer-headers --debug-exceptions --project-root $(TESTS_DIR) INFER_OPTIONS = --siof-only --siof-check-iostreams --debug-exceptions --project-root $(TESTS_DIR)
INFERPRINT_OPTIONS = --issues-tests INFERPRINT_OPTIONS = --issues-tests
SOURCES = \ 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 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_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 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_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 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_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 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] 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 = ../../.. TESTS_DIR = ../../..
# see explanations in cpp/errors/Makefile for the custom isystem # 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) INFER_OPTIONS = --uninit-only --debug-exceptions --project-root $(TESTS_DIR)
INFERPRINT_OPTIONS = --issues-tests INFERPRINT_OPTIONS = --issues-tests

Loading…
Cancel
Save