From 13d54990bdf2952b49ef5538178a0007f87be9c3 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Fri, 2 Aug 2019 10:26:41 -0700 Subject: [PATCH] [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 --- Makefile | 5 - Makefile.config | 3 +- infer/man/man1/infer-analyze.txt | 9 +- infer/man/man1/infer-capture.txt | 6 - infer/man/man1/infer-full.txt | 15 +- infer/man/man1/infer.txt | 15 +- infer/models/cpp/include/atomic | 9 - infer/models/cpp/include/backward/auto_ptr.h | 11 - infer/models/cpp/include/bits/atomic_base.h | 12 - infer/models/cpp/include/bits/locale_conv.h | 15 - infer/models/cpp/include/bits/shared_ptr.h | 13 - infer/models/cpp/include/bits/unique_ptr.h | 13 - infer/models/cpp/include/glog/logging.h | 18 - infer/models/cpp/include/infer_model/atomic.h | 982 ------------------ .../infer_model/begin_name_override.inc | 13 - infer/models/cpp/include/infer_model/common.h | 11 - .../include/infer_model/end_name_override.inc | 13 - .../cpp/include/infer_model/infer_traits.h | 18 - .../models/cpp/include/infer_model/iostream.h | 13 - .../cpp/include/infer_model/portability.h | 51 - .../cpp/include/infer_model/shared_ptr.h | 431 -------- .../cpp/include/infer_model/unique_ptr.h | 473 --------- infer/models/cpp/include/infer_model/vector.h | 650 ------------ .../infer_model/vector_bufferoverrun.h | 612 ----------- .../models/cpp/include/infer_model/weak_ptr.h | 174 ---- .../include/infer_no_model/crash_on_exec.h | 30 - infer/models/cpp/include/iostream | 7 - infer/models/cpp/include/memory | 16 - infer/models/cpp/include/vector | 17 - infer/models/cpp/src/Makefile | 2 +- infer/src/base/Config.ml | 37 +- infer/src/base/Config.mli | 6 - infer/src/base/SourceFile.ml | 9 - infer/src/base/SourceFile.mli | 3 - .../bufferOverrunProofObligations.ml | 3 +- infer/src/clang/ClangCommand.ml | 4 - infer/src/clang/cLocation.ml | 4 - .../build_systems/clang_translation/Makefile | 2 +- .../clang_translation/src/main.cpp.dot | 715 +------------ .../src/main_default_root.cpp.dot | 715 +------------ .../src/main_default_symlink.cpp.dot | 715 +------------ .../src/main_symlink.cpp.dot | 715 +------------ .../codetoanalyze/cpp/bufferoverrun/Makefile | 2 +- .../folly_memory_UninitializedMemoryHacks.cpp | 6 +- .../cpp/bufferoverrun/folly_split.cpp | 2 +- .../cpp/bufferoverrun/issues.exp | 54 +- .../cpp/bufferoverrun/repro1.cpp | 4 +- .../cpp/bufferoverrun/vector.cpp | 63 +- infer/tests/codetoanalyze/cpp/errors/Makefile | 2 +- .../tests/codetoanalyze/cpp/errors/issues.exp | 177 +--- .../cpp/errors/models/atomic.cpp | 16 +- .../cpp/errors/npe/npe_added_to_b1.cpp | 4 +- .../npe/skip_function_with_const_formals.cpp | 8 +- .../errors/smart_ptr/const_volatile_type.cpp | 16 +- .../smart_ptr/deref_after_move_example.cpp | 4 +- .../smart_ptr/shared_ptr_constructors.cpp | 30 +- .../cpp/errors/smart_ptr/shared_ptr_deref.cpp | 38 +- .../cpp/errors/smart_ptr/unique_ptr_deref.cpp | 33 +- .../cpp/errors/smart_ptr/weak_ptr.cpp | 10 +- .../cpp/errors/vector/access_field_later.cpp | 10 +- .../cpp/errors/vector/empty_access.cpp | 52 +- .../cpp/errors/vector/iterator_cmp.cpp | 16 +- .../codetoanalyze/cpp/errors/vector/loop.cpp | 2 +- .../cpp/errors/vector/use_models_headers.cpp | 11 - .../tests/codetoanalyze/cpp/liveness/Makefile | 2 +- .../cpp/liveness/dead_stores.cpp | 5 +- .../codetoanalyze/cpp/liveness/issues.exp | 1 - .../cpp/shared/attributes/annotate.cpp | 14 +- .../cpp/shared/attributes/annotate.cpp.dot | 112 +- infer/tests/codetoanalyze/cpp/siof/Makefile | 4 +- infer/tests/codetoanalyze/cpp/siof/issues.exp | 3 + infer/tests/codetoanalyze/cpp/uninit/Makefile | 2 +- 72 files changed, 341 insertions(+), 6947 deletions(-) delete mode 100644 infer/models/cpp/include/atomic delete mode 100644 infer/models/cpp/include/backward/auto_ptr.h delete mode 100644 infer/models/cpp/include/bits/atomic_base.h delete mode 100644 infer/models/cpp/include/bits/locale_conv.h delete mode 100644 infer/models/cpp/include/bits/shared_ptr.h delete mode 100644 infer/models/cpp/include/bits/unique_ptr.h delete mode 100644 infer/models/cpp/include/glog/logging.h delete mode 100644 infer/models/cpp/include/infer_model/atomic.h delete mode 100644 infer/models/cpp/include/infer_model/begin_name_override.inc delete mode 100644 infer/models/cpp/include/infer_model/common.h delete mode 100644 infer/models/cpp/include/infer_model/end_name_override.inc delete mode 100644 infer/models/cpp/include/infer_model/infer_traits.h delete mode 100644 infer/models/cpp/include/infer_model/iostream.h delete mode 100644 infer/models/cpp/include/infer_model/portability.h delete mode 100644 infer/models/cpp/include/infer_model/shared_ptr.h delete mode 100644 infer/models/cpp/include/infer_model/unique_ptr.h delete mode 100644 infer/models/cpp/include/infer_model/vector.h delete mode 100644 infer/models/cpp/include/infer_model/vector_bufferoverrun.h delete mode 100644 infer/models/cpp/include/infer_model/weak_ptr.h delete mode 100644 infer/models/cpp/include/infer_no_model/crash_on_exec.h delete mode 100644 infer/models/cpp/include/iostream delete mode 100644 infer/models/cpp/include/memory delete mode 100644 infer/models/cpp/include/vector delete mode 100644 infer/tests/codetoanalyze/cpp/errors/vector/use_models_headers.cpp diff --git a/Makefile b/Makefile index 62773cda1..b300ea3c3 100644 --- a/Makefile +++ b/Makefile @@ -575,9 +575,6 @@ ifeq ($(BUILD_C_ANALYZERS),yes) $(MKDIR_P) '$(DESTDIR)$(libdir)'/infer/\$$1" -- test -d '$(DESTDIR)$(libdir)/infer/infer/lib/clang_wrappers/' || \ $(MKDIR_P) '$(DESTDIR)$(libdir)/infer/infer/lib/clang_wrappers/' - find infer/models/cpp/include -type d -print0 | xargs -0 -n 1 \ - $(SHELL) -x -c "test -d '$(DESTDIR)$(libdir)'/infer/\$$1 || \ - $(MKDIR_P) '$(DESTDIR)$(libdir)'/infer/\$$1" -- test -d '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/' || \ $(MKDIR_P) '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/' test -d '$(DESTDIR)$(libdir)/infer/infer/etc/' || \ @@ -621,8 +618,6 @@ ifeq ($(BUILD_C_ANALYZERS),yes) $(LN_S) ../../bin/infer '$(notdir $(cc))';)) find infer/lib/specs/* -print0 | xargs -0 -I \{\} \ $(INSTALL_DATA) -C \{\} '$(DESTDIR)$(libdir)'/infer/\{\} - find infer/models/cpp/include -not -type d -print0 | xargs -0 -I \{\} \ - $(INSTALL_DATA) -C \{\} '$(DESTDIR)$(libdir)'/infer/\{\} $(INSTALL_DATA) -C 'infer/lib/linter_rules/linters.al' \ '$(DESTDIR)$(libdir)/infer/infer/lib/linter_rules/linters.al' $(INSTALL_DATA) -C 'infer/etc/clang_ast.dict' \ diff --git a/Makefile.config b/Makefile.config index c7c4156dc..99da6c065 100644 --- a/Makefile.config +++ b/Makefile.config @@ -108,8 +108,7 @@ CLANG_DEPS_NO_MODELS = \ $(addprefix $(CAPTURE_LIB_DIR)/, util.py) \ $(INFER_BIN) -CLANG_DEPS = $(CLANG_DEPS_NO_MODELS) $(MODELS_RESULTS_FILE) \ - $(shell find $(MODELS_DIR)/cpp/include -type f) +CLANG_DEPS = $(CLANG_DEPS_NO_MODELS) $(MODELS_RESULTS_FILE) define copy_or_same_file $(COPY) "$(1)" "$(2)" || diff -q "$(1)" "$(2)" diff --git a/infer/man/man1/infer-analyze.txt b/infer/man/man1/infer-analyze.txt index a325b01c3..910fde6de 100644 --- a/infer/man/man1/infer-analyze.txt +++ b/infer/man/man1/infer-analyze.txt @@ -421,12 +421,9 @@ SIOF CHECKER OPTIONS --siof-check-iostreams Activates: Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to assume they are always - initialized when --cxx-infer-headers is false to avoid false - positives due to lack of models of the proper initialization of io - streams. However, if your program compiles against a recent - libstdc++ then the infer models are not needed for precision and - it is safe to turn this option on. (Conversely: - --no-siof-check-iostreams) + initialized to avoid false positives. However, if your program + compiles against a recent libstdc++ then it is safe to turn this + option on. (Conversely: --no-siof-check-iostreams) --siof-safe-methods +string Methods that are SIOF-safe; "foo::bar" will match "foo::bar()", diff --git a/infer/man/man1/infer-capture.txt b/infer/man/man1/infer-capture.txt index 5d1abd152..9989f4d8f 100644 --- a/infer/man/man1/infer-capture.txt +++ b/infer/man/man1/infer-capture.txt @@ -217,12 +217,6 @@ CLANG OPTIONS --no-cxx Deactivates: Analyze C++ methods (Conversely: --cxx) - --cxx-infer-headers - Activates: Include C++ header models during compilation. Infer - swaps some C++ headers for its own in order to get a better model - of, eg, the standard library. This can sometimes cause compilation - failures. (Conversely: --no-cxx-infer-headers) - --dump-duplicate-symbols Activates: Dump all symbols with the same name that are defined in more than one file. (Conversely: --no-dump-duplicate-symbols) diff --git a/infer/man/man1/infer-full.txt b/infer/man/man1/infer-full.txt index b1e42df89..b08766b01 100644 --- a/infer/man/man1/infer-full.txt +++ b/infer/man/man1/infer-full.txt @@ -259,12 +259,6 @@ OPTIONS Deactivates: Analyze C++ methods (Conversely: --cxx) See also infer-capture(1). - --cxx-infer-headers - Activates: Include C++ header models during compilation. Infer - swaps some C++ headers for its own in order to get a better model - of, eg, the standard library. This can sometimes cause compilation - failures. (Conversely: --no-cxx-infer-headers) See also infer-capture(1). - --cxx-scope-guards json Specify scope guard classes that can be read only by destructors without being reported as dead stores. See also infer-analyze(1). @@ -988,12 +982,9 @@ OPTIONS --siof-check-iostreams Activates: Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to assume they are always - initialized when --cxx-infer-headers is false to avoid false - positives due to lack of models of the proper initialization of io - streams. However, if your program compiles against a recent - libstdc++ then the infer models are not needed for precision and - it is safe to turn this option on. (Conversely: - --no-siof-check-iostreams) See also infer-analyze(1). + initialized to avoid false positives. However, if your program + compiles against a recent libstdc++ then it is safe to turn this + option on. (Conversely: --no-siof-check-iostreams) See also infer-analyze(1). --siof-only Activates: Enable --siof and disable all other checkers diff --git a/infer/man/man1/infer.txt b/infer/man/man1/infer.txt index 1d6173c95..e7cde60a7 100644 --- a/infer/man/man1/infer.txt +++ b/infer/man/man1/infer.txt @@ -259,12 +259,6 @@ OPTIONS Deactivates: Analyze C++ methods (Conversely: --cxx) See also infer-capture(1). - --cxx-infer-headers - Activates: Include C++ header models during compilation. Infer - swaps some C++ headers for its own in order to get a better model - of, eg, the standard library. This can sometimes cause compilation - failures. (Conversely: --no-cxx-infer-headers) See also infer-capture(1). - --cxx-scope-guards json Specify scope guard classes that can be read only by destructors without being reported as dead stores. See also infer-analyze(1). @@ -988,12 +982,9 @@ OPTIONS --siof-check-iostreams Activates: Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to assume they are always - initialized when --cxx-infer-headers is false to avoid false - positives due to lack of models of the proper initialization of io - streams. However, if your program compiles against a recent - libstdc++ then the infer models are not needed for precision and - it is safe to turn this option on. (Conversely: - --no-siof-check-iostreams) See also infer-analyze(1). + initialized to avoid false positives. However, if your program + compiles against a recent libstdc++ then it is safe to turn this + option on. (Conversely: --no-siof-check-iostreams) See also infer-analyze(1). --siof-only Activates: Enable --siof and disable all other checkers diff --git a/infer/models/cpp/include/atomic b/infer/models/cpp/include/atomic deleted file mode 100644 index 46180ed63..000000000 --- a/infer/models/cpp/include/atomic +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#ifdef INFER_CPP11_ON - -#include - -#else -// atomic headers don't exist for pre-C++11 code -#endif \ No newline at end of file diff --git a/infer/models/cpp/include/backward/auto_ptr.h b/infer/models/cpp/include/backward/auto_ptr.h deleted file mode 100644 index fecaaede3..000000000 --- a/infer/models/cpp/include/backward/auto_ptr.h +++ /dev/null @@ -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 -#include_next -#include diff --git a/infer/models/cpp/include/bits/atomic_base.h b/infer/models/cpp/include/bits/atomic_base.h deleted file mode 100644 index ca1dd1197..000000000 --- a/infer/models/cpp/include/bits/atomic_base.h +++ /dev/null @@ -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 - -// in libstdc++ is including 'bits/atomic_base.h', which gets included -// by other library files as well. Override this header with to avoid -// the problem -#include diff --git a/infer/models/cpp/include/bits/locale_conv.h b/infer/models/cpp/include/bits/locale_conv.h deleted file mode 100644 index 8475991e7..000000000 --- a/infer/models/cpp/include/bits/locale_conv.h +++ /dev/null @@ -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 - -#include_next diff --git a/infer/models/cpp/include/bits/shared_ptr.h b/infer/models/cpp/include/bits/shared_ptr.h deleted file mode 100644 index d9c21742e..000000000 --- a/infer/models/cpp/include/bits/shared_ptr.h +++ /dev/null @@ -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 -#include_next -#include - -#include diff --git a/infer/models/cpp/include/bits/unique_ptr.h b/infer/models/cpp/include/bits/unique_ptr.h deleted file mode 100644 index 81b15242a..000000000 --- a/infer/models/cpp/include/bits/unique_ptr.h +++ /dev/null @@ -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 -#include_next -#include - -#include diff --git a/infer/models/cpp/include/glog/logging.h b/infer/models/cpp/include/glog/logging.h deleted file mode 100644 index 7628a75bf..000000000 --- a/infer/models/cpp/include/glog/logging.h +++ /dev/null @@ -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 -#undef STATIC_ANALYSIS -#else -#include_next -#endif diff --git a/infer/models/cpp/include/infer_model/atomic.h b/infer/models/cpp/include/infer_model/atomic.h deleted file mode 100644 index 7ce313e35..000000000 --- a/infer/models/cpp/include/infer_model/atomic.h +++ /dev/null @@ -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 -#include - -#include -#include -#include - -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 -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 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 -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 -struct __infer_atomic_integral : public __infer_atomic_base { - typedef __infer_atomic_base __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 -struct atomic : public __infer_atomic_base { - typedef __infer_atomic_base __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 : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef char __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef signed char __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef unsigned char __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef short __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef unsigned short __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef int __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef unsigned int __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef long __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef unsigned long __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef long long __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic - : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef unsigned long long __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef wchar_t __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef char16_t __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; -template <> -struct atomic : public __infer_atomic_integral { - typedef __infer_atomic_integral __base; - typedef char32_t __integral_type; - atomic() noexcept = default; - constexpr atomic(__integral_type d) noexcept : __base(d) {} - - using __base::operator=; -}; - -template -struct atomic : public __infer_atomic_base { - typedef __infer_atomic_base __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 atomic_bool; -typedef atomic atomic_char; -typedef atomic atomic_schar; -typedef atomic atomic_uchar; -typedef atomic atomic_short; -typedef atomic atomic_ushort; -typedef atomic atomic_int; -typedef atomic atomic_uint; -typedef atomic atomic_long; -typedef atomic atomic_ulong; -typedef atomic atomic_llong; -typedef atomic atomic_ullong; -typedef atomic atomic_char16_t; -typedef atomic atomic_char32_t; -typedef atomic atomic_wchar_t; -typedef atomic atomic_int_least8_t; -typedef atomic atomic_uint_least8_t; -typedef atomic atomic_int_least16_t; -typedef atomic atomic_uint_least16_t; -typedef atomic atomic_int_least32_t; -typedef atomic atomic_uint_least32_t; -typedef atomic atomic_int_least64_t; -typedef atomic atomic_uint_least64_t; -typedef atomic atomic_int_fast8_t; -typedef atomic atomic_uint_fast8_t; -typedef atomic atomic_int_fast16_t; -typedef atomic atomic_uint_fast16_t; -typedef atomic atomic_int_fast32_t; -typedef atomic atomic_uint_fast32_t; -typedef atomic atomic_int_fast64_t; -typedef atomic atomic_uint_fast64_t; -typedef atomic atomic_intptr_t; -typedef atomic atomic_uintptr_t; -typedef atomic atomic_size_t; -typedef atomic atomic_ptrdiff_t; -typedef atomic atomic_intmax_t; -typedef atomic atomic_uintmax_t; - -// general operations on atomic types -template -bool atomic_is_lock_free(const volatile atomic* a) noexcept { - return a->is_lock_free(); -} -template -void atomic_is_lock_free(const atomic* a) noexcept { - return a->is_lock_free(); -} -template -void atomic_init(volatile atomic* a, T d) noexcept { - a->store(d); -} -template -bool atomic_init(atomic* a, T d) noexcept { - a->store(d); -} -template -void atomic_store(volatile atomic* a, T d) noexcept { - a->store(d); -} -template -void atomic_store(atomic* a, T d) noexcept { - a->store(d); -} -template -void atomic_store_explicit(volatile atomic* a, - T d, - memory_order mo) noexcept { - a->store(d, mo); -} -template -void atomic_store_explicit(atomic* a, T d, memory_order mo) noexcept { - a->store(d, mo); -} -template -T atomic_load(const volatile atomic* a) noexcept { - return a->load(); -} -template -T atomic_load(const atomic* a) noexcept { - return a->load(); -} -template -T atomic_load_explicit(const volatile atomic* a, memory_order mo) noexcept { - return a->load(mo); -} -template -T atomic_load_explicit(const atomic* a, memory_order mo) noexcept { - return a->load(mo); -} -template -T atomic_exchange(volatile atomic* a, T d) noexcept { - return a->exchange(d); -} -template -T atomic_exchange(atomic* a, T d) noexcept { - return a->exchange(d); -} -template -T atomic_echange_explicit(volatile atomic* a, - T d, - memory_order mo) noexcept { - return a->exchange(d, mo); -} -template -T atomic_exchange_explicit(atomic* a, T d, memory_order mo) noexcept { - return a->exchange(d, mo); -} -template -bool atomic_compare_exchange_weak(volatile atomic* a, T* d, T e) noexcept { - return a->compare_exchange_weak(*d, e); -} -template -bool atomic_compare_exchange_weak(atomic* a, T* d, T e) noexcept { - return a->compare_exchange_weak(*d, e); -} -template -bool atomic_compare_exchange_strong(volatile atomic* a, T* d, T e) noexcept { - return a->compare_exchange_strong(*d, e); -} -template -bool atomic_compare_exchange_strong(atomic* a, T* d, T e) noexcept { - return a->compare_exchange_strong(*d, e); -} -template -bool atomic_compare_exchange_weak_explicit(volatile atomic* a, - T* d, - T e, - memory_order so, - memory_order fo) noexcept { - return a->compare_exchange_weak(*d, e, so, fo); -} -template -bool atomic_compare_exchange_weak_explicit( - atomic* a, T* d, T e, memory_order so, memory_order fo) noexcept { - return a->compare_exchange_weak(*d, e, so, fo); -} -template -bool atomic_compare_exchange_strong_explicit(volatile atomic* a, - T* d, - T e, - memory_order so, - memory_order fo) noexcept { - return a->compare_exchange_strong(*d, e, so, fo); -} -template -bool atomic_compare_exchange_strong_explicit( - atomic* a, T* d, T e, memory_order so, memory_order fo) noexcept { - return a->compare_exchange_strong(*d, e, so, fo); -} - -template -T atomic_fetch_add(volatile __infer_atomic_integral* a, T i) noexcept { - return a->fetch_add(i); -} -template -T atomic_fetch_add(__infer_atomic_integral* a, T i) noexcept { - return a->fetch_add(i); -} -template -T atomic_fetch_add_explicit(volatile __infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_add(i, mo); -} -template -T atomic_fetch_add_explicit(__infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_add(i, mo); -} -template -T atomic_fetch_sub(volatile __infer_atomic_integral* a, T i) noexcept { - return a->fetch_sub(i); -} -template -T atomic_fetch_sub(__infer_atomic_integral* a, T i) noexcept { - return a->fetch_sub(i); -} -template -T atomic_fetch_sub_explicit(volatile __infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_sub(i, mo); -} -template -T atomic_fetch_sub_explicit(__infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_sub(i, mo); -} -template -T atomic_fetch_and(volatile __infer_atomic_integral* a, T i) noexcept { - return a->fetch_and(i); -} -template -T atomic_fetch_and(__infer_atomic_integral* a, T i) noexcept { - return a->fetch_and(i); -} -template -T atomic_fetch_and_explicit(volatile __infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_and(i, mo); -} -template -T atomic_fetch_and_explicit(__infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_and(i, mo); -} -template -T atomic_fetch_or(volatile __infer_atomic_integral* a, T i) noexcept { - return a->fetch_or(i); -} -template -T atomic_fetch_or(__infer_atomic_integral* a, T i) noexcept { - return a->fetch_or(i); -} -template -T atomic_fetch_or_explicit(volatile __infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_or(i, mo); -} -template -T atomic_fetch_or_explicit(__infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_or(i, mo); -} -template -T atomic_fetch_xor(volatile __infer_atomic_integral* a, T i) noexcept { - return a->fetch_xor(i); -} -template -T atomic_fetch_xor(__infer_atomic_integral* a, T i) noexcept { - return a->fetch_xor(i); -} -template -T atomic_fetch_xor_explicit(volatile __infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_xor(i, mo); -} -template -T atomic_fetch_xor_explicit(__infer_atomic_integral* a, - T i, - memory_order mo) noexcept { - return a->fetch_xor(i, mo); -} - -// partial specialization for pointers -template -T* atomic_fetch_add(volatile atomic* a, ptrdiff_t i) noexcept { - return a->fetch_add(i); -} -template -T* atomic_fetch_add(atomic* a, ptrdiff_t i) noexcept { - return a->fetch_add(i); -} -template -T* atomic_fetch_add_explicit(volatile atomic* a, - ptrdiff_t i, - memory_order mo) noexcept { - return a->fetch_add(i, mo); -} -template -T* atomic_fetch_add_explicit(atomic* a, - ptrdiff_t i, - memory_order mo) noexcept { - return a->fetch_add(i, mo); -} -template -T* atomic_fetch_sub(volatile atomic* a, ptrdiff_t i) noexcept { - return a->fetch_sub(i); -} -template -T* atomic_fetch_sub(atomic* a, ptrdiff_t i) noexcept { - return a->fetch_sub(i); -} -template -T* atomic_fetch_sub_explicit(volatile atomic* a, - ptrdiff_t i, - memory_order mo) noexcept { - return a->fetch_sub(i, mo); -} -template -T* atomic_fetch_sub_explicit(atomic* 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 diff --git a/infer/models/cpp/include/infer_model/begin_name_override.inc b/infer/models/cpp/include/infer_model/begin_name_override.inc deleted file mode 100644 index 5fab57222..000000000 --- a/infer/models/cpp/include/infer_model/begin_name_override.inc +++ /dev/null @@ -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 diff --git a/infer/models/cpp/include/infer_model/common.h b/infer/models/cpp/include/infer_model/common.h deleted file mode 100644 index c1d085dd5..000000000 --- a/infer/models/cpp/include/infer_model/common.h +++ /dev/null @@ -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 -#include diff --git a/infer/models/cpp/include/infer_model/end_name_override.inc b/infer/models/cpp/include/infer_model/end_name_override.inc deleted file mode 100644 index c750e6361..000000000 --- a/infer/models/cpp/include/infer_model/end_name_override.inc +++ /dev/null @@ -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 diff --git a/infer/models/cpp/include/infer_model/infer_traits.h b/infer/models/cpp/include/infer_model/infer_traits.h deleted file mode 100644 index a31bc09e4..000000000 --- a/infer/models/cpp/include/infer_model/infer_traits.h +++ /dev/null @@ -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 TranslateAsType {}; -} // namespace infer_traits - -#define INFER_MODEL_AS_DEREF_FIRST_ARG \ - __attribute__((annotate("__infer_replace_with_deref_first_arg"))) {} diff --git a/infer/models/cpp/include/infer_model/iostream.h b/infer/models/cpp/include/infer_model/iostream.h deleted file mode 100644 index 708b852be..000000000 --- a/infer/models/cpp/include/infer_model/iostream.h +++ /dev/null @@ -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 - -// 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; diff --git a/infer/models/cpp/include/infer_model/portability.h b/infer/models/cpp/include/infer_model/portability.h deleted file mode 100644 index fdf6d9c1b..000000000 --- a/infer/models/cpp/include/infer_model/portability.h +++ /dev/null @@ -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() // defines __GLIBCXX__ -#include -#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 -#else -#define INFER_NAMESPACE_STD_BEGIN namespace std { -#define INFER_NAMESPACE_STD_END } -#define STD_ITER(T, C) __gnu_cxx::__normal_iterator -#endif diff --git a/infer/models/cpp/include/infer_model/shared_ptr.h b/infer/models/cpp/include/infer_model/shared_ptr.h deleted file mode 100644 index 9b5fce2b2..000000000 --- a/infer/models/cpp/include/infer_model/shared_ptr.h +++ /dev/null @@ -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 -#include -#include - -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 shared_ptr : public std__shared_ptr { - - // translate shared_ptr as type T* - friend class infer_traits::TranslateAsType; - - // shared_ptr in infer is translated as T*. - // Some facts: - // 1. shared_ptr* translated as T** - // 2. typeof(this) translated as T** - // 3. typeof(this) in clang's AST is shared_ptr* - // 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 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(value); - } - - static void model_set(infer_shared_ptr_t self, void* value) { - *self = const_cast(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 ::value>::type> - shared_ptr(const std__shared_ptr& r) {} - - template - shared_ptr(const std__shared_ptr& 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::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 ::value>::type> - explicit shared_ptr(Y* p) { - model_set(__cast_to_infer_ptr(this), p); - } - - template ::value>::type> - shared_ptr(Y* p, D d) : shared_ptr(p) {} - - template ::value>::type> - shared_ptr(Y* p, D d, A a) : shared_ptr(p) {} - - template - shared_ptr(nullptr_t p, D d) : shared_ptr(p) {} - - template - shared_ptr(nullptr_t p, D d, A a) : shared_ptr(p) {} - - template - shared_ptr(const shared_ptr& 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 ::value>::type> - shared_ptr(const shared_ptr& 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 ::value>::type> - shared_ptr(shared_ptr&& r) noexcept { - model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r)); - } - - template ::value>::type> - explicit shared_ptr(const weak_ptr& 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 - shared_ptr(auto_ptr&& r); // {} - - template ::value>::type> - shared_ptr(unique_ptr&& r) : shared_ptr(r.release()) {} - - // destructor: - ~shared_ptr() { reset((T*)nullptr); } - - // assignment: - shared_ptr& operator=(const shared_ptr& r) noexcept { - // shared_ptr(r).swap(*this); - model_copy(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r)); - return *this; - } - - template ::value>::type> - shared_ptr& operator=(const shared_ptr& r) noexcept { - // shared_ptr(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(std::move(r)).swap(*this); - model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r)); - return *this; - } - - template ::value>::type> - shared_ptr& operator=(shared_ptr&& r) { - // shared_ptr(std::move(r)).swap(*this); - model_move(__cast_to_infer_ptr(this), __cast_to_infer_ptr(&r)); - return *this; - } - - template ::value>::type> - shared_ptr& operator=(auto_ptr&& r) { /* ?? */ - } - template ::value>::type> - shared_ptr& operator=(unique_ptr&& r) { - // shared_ptr(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 ::value>::type> - void reset(Y* p) { - /* - if (unique()) { - delete __data; - } - */ - model_set(__cast_to_infer_ptr(this), p); - // TODO adjust refcounts - } - - template ::value>::type> - void reset(Y* p, D d) { - reset(p); - } - - template ::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::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 - bool owner_before(shared_ptr const& b) const { - return true; /* FIXME - use non-det*/ - } - template - bool owner_before(weak_ptr const& b) const { - return true; /* FIXME - use non-det */ - } -}; -template -inline bool operator==(const shared_ptr<_Tp>& __x, - const shared_ptr<_Up>& __y) noexcept { - return __x.get() == __y.get(); -} - -template -inline bool operator!=(const shared_ptr<_Tp>& __x, - const shared_ptr<_Up>& __y) noexcept { - return !(__x == __y); -} - -template -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 -inline bool operator>(const shared_ptr<_Tp>& __x, - const shared_ptr<_Up>& __y) noexcept { - return __y < __x; -} - -template -inline bool operator<=(const shared_ptr<_Tp>& __x, - const shared_ptr<_Up>& __y) noexcept { - return !(__y < __x); -} - -template -inline bool operator>=(const shared_ptr<_Tp>& __x, - const shared_ptr<_Up>& __y) noexcept { - return !(__x < __y); -} - -template -inline bool operator==(const shared_ptr<_Tp>& __x, nullptr_t) noexcept { - return !__x; -} - -template -inline bool operator==(nullptr_t, const shared_ptr<_Tp>& __x) noexcept { - return !__x; -} - -template -inline bool operator!=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept { - return static_cast(__x); -} - -template -inline bool operator!=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept { - return static_cast(__x); -} - -template -inline bool operator<(const shared_ptr<_Tp>& __x, nullptr_t) noexcept { - return less<_Tp*>()(__x.get(), nullptr); -} - -template -inline bool operator<(nullptr_t, const shared_ptr<_Tp>& __x) noexcept { - return less<_Tp*>()(nullptr, __x.get()); -} - -template -inline bool operator>(const shared_ptr<_Tp>& __x, nullptr_t) noexcept { - return nullptr < __x; -} - -template -inline bool operator>(nullptr_t, const shared_ptr<_Tp>& __x) noexcept { - return __x < nullptr; -} - -template -inline bool operator<=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept { - return !(nullptr < __x); -} - -template -inline bool operator<=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept { - return !(__x < nullptr); -} - -template -inline bool operator>=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept { - return !(__x < nullptr); -} - -template -inline bool operator>=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept { - return !(nullptr < __x); -} - -template -struct hash> : public hash> {}; - -// shared_ptr casts - call original functions but change return type to -// std::shared_ptr -template -shared_ptr static_pointer_cast(shared_ptr const& r) noexcept { - return static_pointer_cast((const std__shared_ptr&)r); -} -template -shared_ptr dynamic_pointer_cast(shared_ptr const& r) noexcept { - return dynamic_pointer_cast((const std__shared_ptr&)r); -} -template -shared_ptr const_pointer_cast(shared_ptr const& r) noexcept { - return const_pointer_cast((const std__shared_ptr&)r); -} - -template -class enable_shared_from_this : public std__enable_shared_from_this { - public: - shared_ptr shared_from_this() { - return std__enable_shared_from_this::shared_from_this(); - } - shared_ptr shared_from_this() const { - return std__enable_shared_from_this::shared_from_this(); - } -}; - -template -shared_ptr make_shared(Args&&... args) { - return shared_ptr(::new T(std::forward(args)...)); -} - -template -struct owner_less; - -template -struct owner_less> - : binary_function, shared_ptr, bool> { - typedef bool result_type; - - bool operator()(shared_ptr const& x, shared_ptr const& y) const { - return x.owner_before(y); - } - - bool operator()(shared_ptr const& x, weak_ptr const& y) const { - return x.owner_before(y); - } - - bool operator()(weak_ptr const& x, shared_ptr const& y) const { - return x.owner_before(y); - } -}; - -#undef __cast_to_infer_ptr -INFER_NAMESPACE_STD_END diff --git a/infer/models/cpp/include/infer_model/unique_ptr.h b/infer/models/cpp/include/infer_model/unique_ptr.h deleted file mode 100644 index baac3d596..000000000 --- a/infer/models/cpp/include/infer_model/unique_ptr.h +++ /dev/null @@ -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 -#include - -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 > -struct unique_ptr { - - // use SFINAE to determine whether _Del::pointer exists - class _Pointer { - template - static typename _Up::pointer __test(typename _Up::pointer*); - - template - 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 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; - - /// type of 'this' in unique_ptr 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(value); - } - - static void model_set(infer_unique_ptr_t self, void* value) noexcept { - *self = const_cast(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 - unique_ptr(const std__unique_ptr& 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::value, - deleter_type, - typename add_lvalue_reference::type>::type - __d) noexcept - : unique_ptr<_Tp, _Dp>(ptr) {} - - unique_ptr(pointer ptr, - typename remove_reference::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 ::value && - is_convertible::pointer, - pointer>::value && - is_convertible<_Ep, deleter_type>::value && - (!is_reference::value || - is_same::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::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 ::value && - is_convertible::pointer, - pointer>::value && - is_assignable::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::type& _Dp_reference; - typedef const typename remove_reference::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 -struct unique_ptr<_Tp[], _Dp> { - // use SFINAE to determine whether _Del::pointer exists - class _Pointer { - template - static typename _Up::pointer __test(typename _Up::pointer*); - - template - 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; - - /// type of 'this' in unique_ptr 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::value, - deleter_type, - typename add_lvalue_reference::type>::type - __d) noexcept - : unique_ptr(ptr) {} - - unique_ptr(pointer ptr, - typename remove_reference::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 ::value && - is_convertible::pointer, - pointer>::value && - is_convertible<_Ep, deleter_type>::value && - (!is_reference::value || - is_same::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::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 ::value && - is_convertible::pointer, - pointer>::value && - is_assignable::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::type& _Dp_reference; - typedef const typename remove_reference::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 -inline bool operator==(const unique_ptr<_T1, _D1>& __x, - const unique_ptr<_T2, _D2>& __y) { - return __x.get() == __y.get(); -} - -template -inline bool operator!=(const unique_ptr<_T1, _D1>& __x, - const unique_ptr<_T2, _D2>& __y) { - return !(__x == __y); -} - -template -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 -inline bool operator>(const unique_ptr<_T1, _D1>& __x, - const unique_ptr<_T2, _D2>& __y) { - return __y < __x; -} - -template -inline bool operator<=(const unique_ptr<_T1, _D1>& __x, - const unique_ptr<_T2, _D2>& __y) { - return !(__y < __x); -} - -template -inline bool operator>=(const unique_ptr<_T1, _D1>& __x, - const unique_ptr<_T2, _D2>& __y) { - return !(__x < __y); -} - -template -inline bool operator==(const unique_ptr<_T1, _D1>& __x, nullptr_t) { - return !__x; -} - -template -inline bool operator==(nullptr_t, const unique_ptr<_T1, _D1>& __x) { - return !__x; -} - -template -inline bool operator!=(const unique_ptr<_T1, _D1>& __x, nullptr_t) { - return static_cast(__x); -} - -template -inline bool operator!=(nullptr_t, const unique_ptr<_T1, _D1>& __x) { - return static_cast(__x); -} - -template -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 -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 -inline bool operator>(const unique_ptr<_T1, _D1>& __x, nullptr_t) { - return nullptr < __x; -} - -template -inline bool operator>(nullptr_t, const unique_ptr<_T1, _D1>& __x) { - return __x < nullptr; -} - -template -inline bool operator<=(const unique_ptr<_T1, _D1>& __x, nullptr_t) { - return !(nullptr < __x); -} - -template -inline bool operator<=(nullptr_t, const unique_ptr<_T1, _D1>& __x) { - return !(__x < nullptr); -} - -template -inline bool operator>=(const unique_ptr<_T1, _D1>& __x, nullptr_t) { - return !(__x < nullptr); -} - -template -inline bool operator>=(nullptr_t, const unique_ptr<_T1, _D1>& __x) { - return !(nullptr < __x); -} - -template -struct hash> : public hash> { - size_t operator()(const unique_ptr& __u) const noexcept {} -}; - -template -struct _MakeUniq2 { - typedef unique_ptr<_Tp> __single_object; -}; - -template -struct _MakeUniq2<_Tp[]> { - typedef unique_ptr<_Tp[]> __array; -}; - -template -struct _MakeUniq2<_Tp[_Bound]> { - struct __invalid_type {}; -}; - -/// std::make_unique for single objects -template -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 -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 -inline typename _MakeUniq2<_Tp>::__invalid_type make_unique(_Args&&...) = - delete; -INFER_NAMESPACE_STD_END - -#undef __cast_to_infer_ptr diff --git a/infer/models/cpp/include/infer_model/vector.h b/infer/models/cpp/include/infer_model/vector.h deleted file mode 100644 index 4972c2345..000000000 --- a/infer/models/cpp/include/infer_model/vector.h +++ /dev/null @@ -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 -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef INFER_USE_LIBCPP -// libc++ vector header includes it, but it breaks -// compilation with stdlibc++ implementation -#include -#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 -struct vector_ref { - typedef T& ref; -}; - -template <> -struct vector_ref { - typedef bool_ref ref; -}; - -int __infer_skip__get_int_val(); - -// this function will be treated as SKIP by infer -template -T* __infer_skip__get_nondet_val() {} - -template -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 */> -#else -template > -#endif -class vector { - - public: - typedef vector __self; - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename vector_ref::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 reverse_iterator; - typedef std::reverse_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(); - } - - 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(); - endPtr = __infer_skip__get_nondet_val(); - //} else { - // deallocate(); - //} - } - - void deallocate() { beginPtr = nullptr; } - - template - 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::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 - vector(_ForwardIterator __first, - typename enable_if< - is_constructible< - value_type, - typename iterator_traits<_ForwardIterator>::reference>::value, - _ForwardIterator>::type __last); - template - vector(_ForwardIterator __first, - _ForwardIterator __last, - const allocator_type& __a, - typename enable_if::reference>::value>:: - type* = 0); - - vector(initializer_list __il); - - vector(initializer_list __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 __il) { - assign(__il.begin(), __il.end()); - return *this; - } - - template - typename enable_if::reference>::value, - void>::type - assign(_ForwardIterator __first, _ForwardIterator __last); - - void assign(size_type __n, const_reference __u); - - void assign(initializer_list __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 - - 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 - iterator emplace(const_iterator __position, _Args&&... __args); - iterator insert(const_iterator __position, - size_type __n, - const_reference __x); - template - typename enable_if::reference>::value, - iterator>::type - insert(const_iterator __position, - _ForwardIterator __first, - _ForwardIterator __last); - - iterator insert(const_iterator __position, - initializer_list __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 -typename vector<_Tp, _Allocator>::size_type vector<_Tp, _Allocator>::max_size() - const noexcept {} - -template -vector<_Tp, _Allocator>::vector(size_type __n) { - allocate(__n); -} - -template -vector<_Tp, _Allocator>::vector(size_type __n, const allocator_type& __a) { - allocate(__n); -} - -template -vector<_Tp, _Allocator>::vector(size_type __n, const_reference __x) { - allocate(__n); -} - -template -vector<_Tp, _Allocator>::vector(size_type __n, - const_reference __x, - const allocator_type& __a) { - allocate(__n); -} - -template -template -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 -template -vector<_Tp, _Allocator>::vector( - _ForwardIterator __first, - _ForwardIterator __last, - const allocator_type& __a, - typename enable_if::reference>::value>::type*) { - allocate_iter(__first, __last); -} - -template -vector<_Tp, _Allocator>::vector(const vector& __x) { - beginPtr = __x.beginPtr; -} - -template -vector<_Tp, _Allocator>::vector(const vector& __x, const allocator_type& __a) { - beginPtr = __x.beginPtr; -} - -template -inline vector<_Tp, _Allocator>::vector(vector&& __x) noexcept { - beginPtr = __x.beginPtr; - __x.beginPtr = nullptr; -} - -template -inline vector<_Tp, _Allocator>::vector(vector&& __x, - const allocator_type& __a) { - beginPtr = __x.beginPtr; - __x.beginPtr = nullptr; -} - -template -inline vector<_Tp, _Allocator>::vector(initializer_list __il) { - allocate_iter(__il.begin(), __il.end()); -} - -template -inline vector<_Tp, _Allocator>::vector(initializer_list __il, - const allocator_type& __a) { - allocate_iter(__il.begin(), __il.end()); -} - -template -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 -inline vector<_Tp, _Allocator>& vector<_Tp, _Allocator>::operator=( - const vector& __x) { - beginPtr = __x.beginPtr; - return *this; -} - -template -template -typename enable_if::reference>::value, - void>::type -vector<_Tp, _Allocator>::assign(_ForwardIterator __first, - _ForwardIterator __last) { - allocate_iter(__first, __last); -} - -template -void vector<_Tp, _Allocator>::assign(size_type __n, const_reference __u) { - allocate(__n); -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::__make_iter(pointer __p) noexcept { - return iterator(__p); -} - -template -inline typename vector<_Tp, _Allocator>::const_iterator -vector<_Tp, _Allocator>::__make_iter(const_pointer __p) const noexcept { - return const_iterator(__p); -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::begin() noexcept { - return __make_iter(beginPtr); -} - -template -inline typename vector<_Tp, _Allocator>::const_iterator -vector<_Tp, _Allocator>::begin() const noexcept { - return __make_iter(beginPtr); -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::end() noexcept { - return __make_iter(endPtr); -} - -template -inline typename vector<_Tp, _Allocator>::const_iterator -vector<_Tp, _Allocator>::end() const noexcept { - return __make_iter(endPtr); -} - -template -inline typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>:: -operator[](size_type __n) { - return (reference)*_get_index(__n); -} - -template -inline typename vector<_Tp, _Allocator>::const_reference - vector<_Tp, _Allocator>::operator[](size_type __n) const { - return (const_reference)*_get_index(__n); -} - -template -typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>::at( - size_type __n) { - return (reference)*_get_index(__n); -} - -template -typename vector<_Tp, _Allocator>::const_reference vector<_Tp, _Allocator>::at( - size_type __n) const { - return (const_reference)*_get_index(__n); -} - -template -void vector<_Tp, _Allocator>::reserve(size_type __n) {} - -template -void vector<_Tp, _Allocator>::shrink_to_fit() noexcept {} - -template -inline void vector<_Tp, _Allocator>::push_back(const_reference __x) { - allocate(1); -} - -template -inline void vector<_Tp, _Allocator>::push_back(value_type&& __x) { - allocate(1); -} - -template -template -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 -inline void vector<_Tp, _Allocator>::pop_back() { - // dereference the object -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::erase(const_iterator __position) { - // dereference the object - /* TODO return __r;*/ -} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::erase( - const_iterator __first, const_iterator __last) { - // dereference the object - /* TODO return __r;*/ -} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert( - const_iterator __position, const_reference __x) {} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert( - const_iterator __position, value_type&& __x) {} - -template -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::emplace( - const_iterator __position, _Args&&... __args) { - // TODO consider constructing the object - allocate(1); -} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert( - const_iterator __position, size_type __n, const_reference __x) { - if (empty()) { - allocate(__n); - } -} - -template -template -typename enable_if::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 -void vector<_Tp, _Allocator>::resize(size_type __sz) { - allocate(__sz); -} - -template -void vector<_Tp, _Allocator>::resize(size_type __sz, const_reference __x) { - allocate(__sz); -} - -template -void vector<_Tp, _Allocator>::swap(vector& __x) { - value_type* tmp = __x.beginPtr; - __x.beginPtr = beginPtr; - beginPtr = tmp; -} - -template -struct hash> - : public unary_function, size_t> { - - size_t operator()(const vector& __vec) const noexcept {} -}; - -template -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 -inline bool operator!=(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return !(__x == __y); -} - -template -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 -inline bool operator>(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return __y < __x; -} - -template -inline bool operator>=(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return !(__x < __y); -} - -template -inline bool operator<=(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return !(__y < __x); -} - -template -inline void swap(vector<_Tp, _Allocator>& __x, vector<_Tp, _Allocator>& __y) { - __x.swap(__y); -} - -INFER_NAMESPACE_STD_END diff --git a/infer/models/cpp/include/infer_model/vector_bufferoverrun.h b/infer/models/cpp/include/infer_model/vector_bufferoverrun.h deleted file mode 100644 index 0cf5c0b72..000000000 --- a/infer/models/cpp/include/infer_model/vector_bufferoverrun.h +++ /dev/null @@ -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 -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef INFER_USE_LIBCPP -// libc++ vector header includes it, but it breaks -// compilation with stdlibc++ implementation -#include -#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 -struct vector_ref { - typedef T& ref; -}; - -template <> -struct vector_ref { - typedef bool_ref ref; -}; - -// this function will be treated as SKIP by infer -template -T* __infer_skip__get_nondet_val() {} - -template -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 */> -#else -template > -#endif -class vector { - - public: - typedef vector __self; - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename vector_ref::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 reverse_iterator; - typedef std::reverse_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 - void allocate_iter(Iter begin, Iter end) { - allocate(distance(begin, end)); - } - - /* std::vector implementation */ - - vector() noexcept(is_nothrow_default_constructible::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 - vector(_ForwardIterator __first, - typename enable_if< - is_constructible< - value_type, - typename iterator_traits<_ForwardIterator>::reference>::value, - _ForwardIterator>::type __last); - template - vector(_ForwardIterator __first, - _ForwardIterator __last, - const allocator_type& __a, - typename enable_if::reference>::value>:: - type* = 0); - - vector(initializer_list __il); - - vector(initializer_list __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 __il) { - assign(__il.begin(), __il.end()); - return *this; - } - - template - typename enable_if::reference>::value, - void>::type - assign(_ForwardIterator __first, _ForwardIterator __last); - - void assign(size_type __n, const_reference __u); - - void assign(initializer_list __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 - - 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 - iterator emplace(const_iterator __position, _Args&&... __args); - iterator insert(const_iterator __position, - size_type __n, - const_reference __x); - template - typename enable_if::reference>::value, - iterator>::type - insert(const_iterator __position, - _ForwardIterator __first, - _ForwardIterator __last); - - iterator insert(const_iterator __position, - initializer_list __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 -typename vector<_Tp, _Allocator>::size_type vector<_Tp, _Allocator>::max_size() - const noexcept {} - -template -vector<_Tp, _Allocator>::vector(size_type __n) { - allocate(__n); -} - -template -vector<_Tp, _Allocator>::vector(size_type __n, const allocator_type& __a) { - allocate(__n); -} - -template -vector<_Tp, _Allocator>::vector(size_type __n, const_reference __x) { - allocate(__n); -} - -template -vector<_Tp, _Allocator>::vector(size_type __n, - const_reference __x, - const allocator_type& __a) { - allocate(__n); -} - -template -template -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 -template -vector<_Tp, _Allocator>::vector( - _ForwardIterator __first, - _ForwardIterator __last, - const allocator_type& __a, - typename enable_if::reference>::value>::type*) { - allocate_iter(__first, __last); -} - -template -vector<_Tp, _Allocator>::vector(const vector& __x) { - allocate(__x.size()); -} - -template -vector<_Tp, _Allocator>::vector(const vector& __x, const allocator_type& __a) { - allocate(__x.size()); -} - -template -inline vector<_Tp, _Allocator>::vector(vector&& __x) noexcept { - allocate(__x.size()); - __x.clear(); -} - -template -inline vector<_Tp, _Allocator>::vector(vector&& __x, - const allocator_type& __a) { - allocate(__x.size()); - __x.clear(); -} - -template -inline vector<_Tp, _Allocator>::vector(initializer_list __il) { - allocate_iter(__il.begin(), __il.end()); -} - -template -inline vector<_Tp, _Allocator>::vector(initializer_list __il, - const allocator_type& __a) { - allocate_iter(__il.begin(), __il.end()); -} - -template -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 -inline vector<_Tp, _Allocator>& vector<_Tp, _Allocator>::operator=( - const vector& __x) { - allocate(__x.size()); - return *this; -} - -template -template -typename enable_if::reference>::value, - void>::type -vector<_Tp, _Allocator>::assign(_ForwardIterator __first, - _ForwardIterator __last) { - allocate_iter(__first, __last); -} - -template -void vector<_Tp, _Allocator>::assign(size_type __n, const_reference __u) { - allocate(__n); -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::__make_iter(pointer __p) noexcept { - return iterator(__p); -} - -template -inline typename vector<_Tp, _Allocator>::const_iterator -vector<_Tp, _Allocator>::__make_iter(const_pointer __p) const noexcept { - return const_iterator(__p); -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::begin() noexcept { - return __make_iter(get()); -} - -template -inline typename vector<_Tp, _Allocator>::const_iterator -vector<_Tp, _Allocator>::begin() const noexcept { - return __make_iter(get()); -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::end() noexcept { - return __make_iter(get()); -} - -template -inline typename vector<_Tp, _Allocator>::const_iterator -vector<_Tp, _Allocator>::end() const noexcept { - return __make_iter(get()); -} - -template -inline typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>:: -operator[](size_type __n) { - access_at(__n); - return (reference)*get(); -} - -template -inline typename vector<_Tp, _Allocator>::const_reference - vector<_Tp, _Allocator>::operator[](size_type __n) const { - access_at(__n); - return (const_reference)*get(); -} - -template -typename vector<_Tp, _Allocator>::reference vector<_Tp, _Allocator>::at( - size_type __n) { - access_at(__n); - return (reference)*get(); -} - -template -typename vector<_Tp, _Allocator>::const_reference vector<_Tp, _Allocator>::at( - size_type __n) const { - access_at(__n); - return (const_reference)*get(); -} - -template -void vector<_Tp, _Allocator>::reserve(size_type __n) {} - -template -void vector<_Tp, _Allocator>::shrink_to_fit() noexcept {} - -template -inline void vector<_Tp, _Allocator>::push_back(const_reference __x) { - infer_size++; -} - -template -inline void vector<_Tp, _Allocator>::push_back(value_type&& __x) { - infer_size++; -} - -template -template -inline void vector<_Tp, _Allocator>::emplace_back(_Args&&... __args) { - infer_size++; -} - -template -inline void vector<_Tp, _Allocator>::pop_back() { - infer_size--; -} - -template -inline typename vector<_Tp, _Allocator>::iterator -vector<_Tp, _Allocator>::erase(const_iterator __position) { - infer_size--; -} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::erase( - const_iterator __first, const_iterator __last) { - infer_size -= distance(__first, __last); -} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert( - const_iterator __position, const_reference __x) { - infer_size++; -} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert( - const_iterator __position, value_type&& __x) { - infer_size++; -} - -template -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::emplace( - const_iterator __position, _Args&&... __args) { - infer_size++; -} - -template -typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert( - const_iterator __position, size_type __n, const_reference __x) { - infer_size += __n; -} - -template -template -typename enable_if::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 -void vector<_Tp, _Allocator>::resize(size_type __sz) { - infer_size = __sz; -} - -template -void vector<_Tp, _Allocator>::resize(size_type __sz, const_reference __x) { - infer_size = __sz; -} - -template -void vector<_Tp, _Allocator>::swap(vector& __x) { - auto tmp = __x.size(); - __x.resize(infer_size); - infer_size = tmp; -} - -template -struct hash> - : public unary_function, size_t> { - - size_t operator()(const vector& __vec) const noexcept {} -}; - -template -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 -inline bool operator!=(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return !(__x == __y); -} - -template -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 -inline bool operator>(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return __y < __x; -} - -template -inline bool operator>=(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return !(__x < __y); -} - -template -inline bool operator<=(const vector<_Tp, _Allocator>& __x, - const vector<_Tp, _Allocator>& __y) { - return !(__y < __x); -} - -template -inline void swap(vector<_Tp, _Allocator>& __x, vector<_Tp, _Allocator>& __y) { - __x.swap(__y); -} - -INFER_NAMESPACE_STD_END diff --git a/infer/models/cpp/include/infer_model/weak_ptr.h b/infer/models/cpp/include/infer_model/weak_ptr.h deleted file mode 100644 index 5d8c173ad..000000000 --- a/infer/models/cpp/include/infer_model/weak_ptr.h +++ /dev/null @@ -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 -#include - -unsigned long int __infer_nondet_unsigned_long_int(); - -INFER_NAMESPACE_STD_BEGIN - -// forward declaration because it is used here -template -class shared_ptr; - -// Ideally: : public std__weak_ptr -// 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 weak_ptr { - - template - 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 ::value>::type> - weak_ptr(const std__weak_ptr& r) {} - - // constructors: - constexpr weak_ptr() noexcept { ptr = nullptr; } - - template ::value>::type> - weak_ptr(const shared_ptr& r) noexcept { - ptr = r.get(); - } - - weak_ptr(const weak_ptr& r) noexcept { ptr = r.ptr; } - - template ::value>::type> - weak_ptr(const weak_ptr& r) noexcept { - ptr = r.ptr; - } - - weak_ptr(weak_ptr&& r) noexcept { - ptr = r.ptr; - r.ptr = nullptr; - } - - template ::value>::type> - weak_ptr(weak_ptr&& r) noexcept { - ptr = r.ptr; - r.ptr = nullptr; - } - - // destructor: - ~weak_ptr() { ptr = nullptr; } - - // assignment: - weak_ptr& operator=(const weak_ptr& r) noexcept { - // weak_ptr(r).swap(*this); - ptr = r.ptr; - return *this; - } - - template ::value>::type> - weak_ptr& operator=(const weak_ptr& r) noexcept { - // weak_ptr(r).swap(*this); - ptr = r.ptr; - return *this; - } - - template ::value>::type> - weak_ptr& operator=(const shared_ptr& r) noexcept { - // weak_ptr(r).swap(*this); - ptr = r.get(); - return *this; - } - - weak_ptr& operator=(weak_ptr&& r) noexcept { - // shared_ptr(std::move(r)).swap(*this); - ptr = r.ptr; - r.ptr = nullptr; - return *this; - } - - template ::value>::type> - weak_ptr& operator=(weak_ptr&& r) { - // weak_ptr(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 lock() const noexcept { - if (use_count() > 0) { - return shared_ptr(ptr); - } - return shared_ptr(); - } - - template - bool owner_before(shared_ptr const& b) const { - return true; /* FIXME - use non-det*/ - } - template - bool owner_before(weak_ptr const& b) const { - return true; /* FIXME - use non-det */ - } -}; - -template -struct owner_less; - -template -struct owner_less> - : binary_function, weak_ptr, bool> { - typedef bool result_type; - bool operator()(weak_ptr const& x, weak_ptr const& y) const { - return x.owner_before(y); - } - - bool operator()(shared_ptr const& x, weak_ptr const& y) const { - return x.owner_before(y); - } - - bool operator()(weak_ptr const& x, shared_ptr const& y) const { - return x.owner_before(y); - } -}; - -INFER_NAMESPACE_STD_END diff --git a/infer/models/cpp/include/infer_no_model/crash_on_exec.h b/infer/models/cpp/include/infer_no_model/crash_on_exec.h deleted file mode 100644 index 5ce2f5d07..000000000 --- a/infer/models/cpp/include/infer_no_model/crash_on_exec.h +++ /dev/null @@ -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 -#include - -// 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 diff --git a/infer/models/cpp/include/iostream b/infer/models/cpp/include/iostream deleted file mode 100644 index 013157c59..000000000 --- a/infer/models/cpp/include/iostream +++ /dev/null @@ -1,7 +0,0 @@ -#include - -#ifdef INFER_CPP11_ON -# include -#else -# include_next -#endif diff --git a/infer/models/cpp/include/memory b/infer/models/cpp/include/memory deleted file mode 100644 index 8d7fad931..000000000 --- a/infer/models/cpp/include/memory +++ /dev/null @@ -1,16 +0,0 @@ - -#include - -#ifdef INFER_CPP11_ON - -#include -#include_next -#include - -#include -#include - -#else -// don't model memory for pre-C++11 code -#include_next -#endif diff --git a/infer/models/cpp/include/vector b/infer/models/cpp/include/vector deleted file mode 100644 index a88941d98..000000000 --- a/infer/models/cpp/include/vector +++ /dev/null @@ -1,17 +0,0 @@ -#include - -#ifdef INFER_CPP11_ON - -#ifdef __INFER_BUFFEROVERRUN -// Separate model for bufferoverrun checker -// TODO t17807570: move to a separate directory -#include -#else -#include -#endif - -#else -// don't model std::vector pre-c++11 to -// simplify implementation -#include_next -#endif diff --git a/infer/models/cpp/src/Makefile b/infer/models/cpp/src/Makefile index b8775584a..a8ca77db9 100644 --- a/infer/models/cpp/src/Makefile +++ b/infer/models/cpp/src/Makefile @@ -7,7 +7,7 @@ SOURCES=$(wildcard *.cpp) CSOURCES=$(wildcard c_src/*.c) OBJECTS=$(patsubst %.c,%_cxx.o, $(CSOURCES)) $(patsubst %.cpp,%.o, $(SOURCES)) CXX=clang++ -CXXFLAGS=-c -w -std=c++11 -isystem../include +CXXFLAGS=-c -w -std=c++11 all: $(OBJECTS) diff --git a/infer/src/base/Config.ml b/infer/src/base/Config.ml index ac2771409..85adeaba8 100644 --- a/infer/src/base/Config.ml +++ b/infer/src/base/Config.ml @@ -420,12 +420,6 @@ let models_src_dir = (* Normalize the path *) -let relative_cpp_extra_include_dir = "cpp" ^/ "include" - -let cpp_extra_include_dir = models_src_dir ^/ relative_cpp_extra_include_dir - -let relative_cpp_models_dir = relative_cpp_extra_include_dir ^/ "infer_model" - let linters_def_dir = lib_dir ^/ "linter_rules" let linters_def_default_file = linters_def_dir ^/ "linters.al" @@ -1086,25 +1080,12 @@ and current_to_previous_script = we are on the current version already." -and cxx_infer_headers, siof_check_iostreams = - let siof_check_iostreams = - CLOpt.mk_bool ~long:"siof-check-iostreams" - ~in_help:InferCommand.[(Analyze, manual_siof)] - "Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to \ - assume they are always initialized when $(b,--cxx-infer-headers) is false to avoid false \ - positives due to lack of models of the proper initialization of io streams. However, if \ - your program compiles against a recent libstdc++ then the infer models are not needed for \ - precision and it is safe to turn this option on." - in - let cxx_infer_headers = - CLOpt.mk_bool_group ~long:"cxx-infer-headers" ~default:false - ~in_help:InferCommand.[(Capture, manual_clang)] - "Include C++ header models during compilation. Infer swaps some C++ headers for its own in \ - order to get a better model of, eg, the standard library. This can sometimes cause \ - compilation failures." - [siof_check_iostreams] [] - in - (cxx_infer_headers, siof_check_iostreams) +and siof_check_iostreams = + CLOpt.mk_bool ~long:"siof-check-iostreams" + ~in_help:InferCommand.[(Analyze, manual_siof)] + "Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to \ + assume they are always initialized to avoid false positives. However, if your program \ + compiles against a recent libstdc++ then it is safe to turn this option on." and cxx_scope_guards = @@ -2491,6 +2472,10 @@ and _ = and () = CLOpt.mk_set ~parse_mode:CLOpt.Javac version ~deprecated:["version"] ~long:"" `Javac "" +and (_ : bool ref) = + CLOpt.mk_bool ~long:"" ~deprecated:["-cxx-infer-headers"] "This option doesn't exist anymore." + + (** Parse Command Line Args *) let inferconfig_file = @@ -2821,8 +2806,6 @@ and current_to_previous_script = !current_to_previous_script and cxx = !cxx -and cxx_infer_headers = !cxx_infer_headers - and cxx_scope_guards = !cxx_scope_guards and debug_level_analysis = !debug_level_analysis diff --git a/infer/src/base/Config.mli b/infer/src/base/Config.mli index e85bf5a82..2549496c7 100644 --- a/infer/src/base/Config.mli +++ b/infer/src/base/Config.mli @@ -75,8 +75,6 @@ val classpath : string option val costs_report_json : string -val cpp_extra_include_dir : string - val csl_analysis : bool val default_failure_name : string @@ -151,8 +149,6 @@ val property_attributes : string val racerd_issues_dir_name : string -val relative_cpp_models_dir : string - val relative_path_backtrack : int val report : bool @@ -314,8 +310,6 @@ val current_to_previous_script : string option val cxx : bool -val cxx_infer_headers : bool - val cxx_scope_guards : Yojson.Basic.t val debug_exceptions : bool diff --git a/infer/src/base/SourceFile.ml b/infer/src/base/SourceFile.ml index 944e18a03..5fb21fe76 100644 --- a/infer/src/base/SourceFile.ml +++ b/infer/src/base/SourceFile.ml @@ -118,15 +118,6 @@ let is_infer_model source_file = true -(** Returns true if the file is a C++ model *) -let is_cpp_model file = - match file with - | RelativeInferModel path -> - String.is_prefix ~prefix:Config.relative_cpp_models_dir path - | _ -> - false - - let is_under_project_root = function | Invalid {ml_source_file} -> L.(die InternalError) "cannot be called with Invalid source file from %s" ml_source_file diff --git a/infer/src/base/SourceFile.mli b/infer/src/base/SourceFile.mli index f93ad3e2d..750e64b5a 100644 --- a/infer/src/base/SourceFile.mli +++ b/infer/src/base/SourceFile.mli @@ -41,9 +41,6 @@ val create : ?warn_on_error:bool -> string -> t WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist). *) -val is_cpp_model : t -> bool -(** Returns true if the file is a C++ model *) - val is_infer_model : t -> bool val is_under_project_root : t -> bool diff --git a/infer/src/bufferoverrun/bufferOverrunProofObligations.ml b/infer/src/bufferoverrun/bufferOverrunProofObligations.ml index de857c8ea..73d895dc8 100644 --- a/infer/src/bufferoverrun/bufferOverrunProofObligations.ml +++ b/infer/src/bufferoverrun/bufferOverrunProofObligations.ml @@ -49,8 +49,7 @@ module ConditionTrace = struct let pp_description : F.formatter -> t -> unit = fun fmt ct -> match ct.cond_trace with - | Inter {callee_pname} - when Config.bo_debug >= 1 || not (SourceFile.is_cpp_model ct.issue_location.Location.file) -> + | Inter {callee_pname} -> F.fprintf fmt " by call to %a " MF.pp_monospaced (Typ.Procname.to_string callee_pname) | _ -> () diff --git a/infer/src/clang/ClangCommand.ml b/infer/src/clang/ClangCommand.ml index ab7ff912d..1da798422 100644 --- a/infer/src/clang/ClangCommand.ml +++ b/infer/src/clang/ClangCommand.ml @@ -246,10 +246,6 @@ let with_plugin_args args = [] |> (* -cc1 has to be the first argument or clang will think it runs in driver mode *) argv_cons "-cc1" - |> (* It's important to place this option before other -isystem options. *) - argv_do_if - Config.(cxx_infer_headers && (biabduction || bufferoverrun || siof)) - (List.rev_append ["-isystem"; Config.cpp_extra_include_dir]) |> List.rev_append [ "-load" ; plugin_path diff --git a/infer/src/clang/cLocation.ml b/infer/src/clang/cLocation.ml index 946fce613..540aae8e7 100644 --- a/infer/src/clang/cLocation.ml +++ b/infer/src/clang/cLocation.ml @@ -66,12 +66,8 @@ let should_translate translation_unit (loc_start, loc_end) decl_trans_context ~t map_file_of source_file_in_project loc_end || map_file_of source_file_in_project loc_start in let translate_on_demand = translate_when_used || file_in_project || Config.models_mode in - let file_in_models = - map_file_of SourceFile.is_cpp_model loc_end || map_file_of SourceFile.is_cpp_model loc_start - in map_file_of equal_current_source loc_end || map_file_of equal_current_source loc_start - || file_in_models || (Config.cxx && map_file_of equal_header_of_current_source loc_start) || Config.cxx && decl_trans_context = `Translation diff --git a/infer/tests/build_systems/clang_translation/Makefile b/infer/tests/build_systems/clang_translation/Makefile index 07eadf0f3..a50948713 100644 --- a/infer/tests/build_systems/clang_translation/Makefile +++ b/infer/tests/build_systems/clang_translation/Makefile @@ -22,7 +22,7 @@ CLEAN_EXTRA = $(DOT_FILES) $(foreach source,$(SOURCES),infer-out-$(basename $(no include $(TESTS_DIR)/clang-frontend.make -INFER_OPTIONS = capture --frontend-tests --skip-translation-headers exclude_dir --cxx-infer-headers +INFER_OPTIONS = capture --frontend-tests --skip-translation-headers exclude_dir capture: $(DOT_FILES) diff --git a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main.cpp.dot b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main.cpp.dot index 11ba8b5ce..28ebbd104 100644 --- a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main.cpp.dot +++ b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main.cpp.dot @@ -1,107 +1,5 @@ /* @generated */ digraph cfg { -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled] - - -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ; -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled] - - "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled] @@ -113,14 +11,14 @@ digraph cfg { "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ; -"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:int* \n " color=yellow style=filled] +"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:std::shared_ptr \n " color=yellow style=filled] "main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ; "main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled] -"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr::~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,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr [line 22, column 1]\n n$3=_fun_std::shared_ptr::~shared_ptr(&x:std::shared_ptr*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ; @@ -128,7 +26,7 @@ digraph cfg { "main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; -"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr::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); [line 19, column 3]\n n$6=_fun_std::shared_ptr::shared_ptr(&x:std::shared_ptr*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; @@ -170,611 +68,4 @@ digraph cfg { "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:signed char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ; -"model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr::reset\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled] - - - "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr::reset \n " color=yellow style=filled] - - -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr::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::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#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr::shared_ptr \n " color=yellow style=filled] - - -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ; -"shared_ptr#shared_ptr#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::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled] - - -"__infer_inner_destructor_~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr::reset \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr::reset(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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr::~shared_ptr \n " color=yellow style=filled] - - -"~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ; } diff --git a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_root.cpp.dot b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_root.cpp.dot index 11ba8b5ce..28ebbd104 100644 --- a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_root.cpp.dot +++ b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_root.cpp.dot @@ -1,107 +1,5 @@ /* @generated */ digraph cfg { -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled] - - -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ; -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled] - - "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled] @@ -113,14 +11,14 @@ digraph cfg { "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ; -"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:int* \n " color=yellow style=filled] +"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:std::shared_ptr \n " color=yellow style=filled] "main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ; "main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled] -"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr::~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,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr [line 22, column 1]\n n$3=_fun_std::shared_ptr::~shared_ptr(&x:std::shared_ptr*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ; @@ -128,7 +26,7 @@ digraph cfg { "main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; -"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr::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); [line 19, column 3]\n n$6=_fun_std::shared_ptr::shared_ptr(&x:std::shared_ptr*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; @@ -170,611 +68,4 @@ digraph cfg { "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:signed char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ; -"model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr::reset\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled] - - - "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr::reset \n " color=yellow style=filled] - - -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr::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::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#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr::shared_ptr \n " color=yellow style=filled] - - -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ; -"shared_ptr#shared_ptr#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::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled] - - -"__infer_inner_destructor_~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr::reset \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr::reset(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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr::~shared_ptr \n " color=yellow style=filled] - - -"~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ; } diff --git a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_symlink.cpp.dot b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_symlink.cpp.dot index 11ba8b5ce..28ebbd104 100644 --- a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_symlink.cpp.dot +++ b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_default_symlink.cpp.dot @@ -1,107 +1,5 @@ /* @generated */ digraph cfg { -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled] - - -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ; -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled] - - "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled] @@ -113,14 +11,14 @@ digraph cfg { "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ; -"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:int* \n " color=yellow style=filled] +"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:std::shared_ptr \n " color=yellow style=filled] "main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ; "main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled] -"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr::~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,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr [line 22, column 1]\n n$3=_fun_std::shared_ptr::~shared_ptr(&x:std::shared_ptr*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ; @@ -128,7 +26,7 @@ digraph cfg { "main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; -"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr::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); [line 19, column 3]\n n$6=_fun_std::shared_ptr::shared_ptr(&x:std::shared_ptr*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; @@ -170,611 +68,4 @@ digraph cfg { "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:signed char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ; -"model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr::reset\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled] - - - "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr::reset \n " color=yellow style=filled] - - -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr::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::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#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr::shared_ptr \n " color=yellow style=filled] - - -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ; -"shared_ptr#shared_ptr#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::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled] - - -"__infer_inner_destructor_~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr::reset \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr::reset(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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr::~shared_ptr \n " color=yellow style=filled] - - -"~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ; } diff --git a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_symlink.cpp.dot b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_symlink.cpp.dot index 11ba8b5ce..28ebbd104 100644 --- a/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_symlink.cpp.dot +++ b/infer/tests/build_systems/codetoanalyze/clang_translation/src/main_symlink.cpp.dot @@ -1,107 +1,5 @@ /* @generated */ digraph cfg { -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_1" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 965, column 51]\n _=*n$0:std::atomic_flag [line 965, column 51]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 965, column 51]\n NULLIFY(&f); [line 965, column 51]\n EXIT_SCOPE(_,n$0,n$2,f); [line 965, column 51]\n APPLY_ABSTRACTION; [line 965, column 51]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_3" -> "atomic_flag_clear#std(class std::atomic_flag)#17550914922100779771.b40ff6dea8467aa48fb1fad5c85a8009_2" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" [label="1: Start std::atomic_flag_clear\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_1" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" ; -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" [label="2: Exit std::atomic_flag_clear \n " color=yellow style=filled] - - -"atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 964, column 60]\n _=*n$0:std::atomic_flag [line 964, column 60]\n n$2=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,5:int) [line 964, column 60]\n NULLIFY(&f); [line 964, column 60]\n EXIT_SCOPE(_,n$0,n$2,f); [line 964, column 60]\n APPLY_ABSTRACTION; [line 964, column 60]\n " shape="box"] - - - "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_3" -> "atomic_flag_clear#std(class std::atomic_flag)#8417018393663174481.4341d144fbe33187ae045b01f0e1b40f_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 971, column 3]\n _=*n$0:std::atomic_flag [line 971, column 3]\n n$2=*&mo:int [line 971, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 971, column 3]\n NULLIFY(&f); [line 971, column 3]\n NULLIFY(&mo); [line 971, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 971, column 3]\n APPLY_ABSTRACTION; [line 971, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#13508243229460098920.c26a8394ae32c4c5cec109cbacc8259c_2" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" [label="1: Start std::atomic_flag_clear_explicit\nFormals: f:std::atomic_flag* mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_1" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" ; -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" [label="2: Exit std::atomic_flag_clear_explicit \n " color=yellow style=filled] - - -"atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" [label="3: Call _fun_std::atomic_flag::clear \n n$0=*&f:std::atomic_flag* [line 968, column 3]\n _=*n$0:std::atomic_flag [line 968, column 3]\n n$2=*&mo:int [line 968, column 12]\n n$3=_fun_std::atomic_flag::clear(n$0:std::atomic_flag*,n$2:int) [line 968, column 3]\n NULLIFY(&f); [line 968, column 3]\n NULLIFY(&mo); [line 968, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,mo); [line 968, column 3]\n APPLY_ABSTRACTION; [line 968, column 3]\n " shape="box"] - - - "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_3" -> "atomic_flag_clear_explicit#std(class std::atomic_flag)#17643441563504553916.bf9623dc8b93caad1a1d212bed8336cd_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 954, column 10]\n _=*n$0:std::atomic_flag [line 954, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 954, column 10]\n *&return:_Bool=n$2 [line 954, column 3]\n NULLIFY(&f); [line 954, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 954, column 3]\n APPLY_ABSTRACTION; [line 954, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#7118173663506619749.8e5bcce1a903365d13b93d8f9cc09a0f_2" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" [label="1: Start std::atomic_flag_test_and_set\nFormals: f:std::atomic_flag*\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_1" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" ; -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" [label="2: Exit std::atomic_flag_test_and_set \n " color=yellow style=filled] - - -"atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 951, column 10]\n _=*n$0:std::atomic_flag [line 951, column 10]\n n$2=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,5:int) [line 951, column 10]\n *&return:_Bool=n$2 [line 951, column 3]\n NULLIFY(&f); [line 951, column 3]\n EXIT_SCOPE(_,n$0,n$2,f); [line 951, column 3]\n APPLY_ABSTRACTION; [line 951, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_3" -> "atomic_flag_test_and_set#std(class std::atomic_flag)#75594002239380467.20ebabcf2d2656accbbc1a7d565aeb60_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 958, column 10]\n _=*n$0:std::atomic_flag [line 958, column 10]\n n$2=*&m:int [line 958, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 958, column 10]\n *&return:_Bool=n$3 [line 958, column 3]\n NULLIFY(&f); [line 958, column 3]\n NULLIFY(&m); [line 958, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 958, column 3]\n APPLY_ABSTRACTION; [line 958, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#17397655144703252762.f8cb6317434afa11c329d6f16d1915f1_2" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" [label="1: Start std::atomic_flag_test_and_set_explicit\nFormals: f:std::atomic_flag* m:int\nLocals: \n " color=yellow style=filled] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_1" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" ; -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" [label="2: Exit std::atomic_flag_test_and_set_explicit \n " color=yellow style=filled] - - -"atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" [label="3: Return Stmt \n n$0=*&f:std::atomic_flag* [line 962, column 10]\n _=*n$0:std::atomic_flag [line 962, column 10]\n n$2=*&m:int [line 962, column 26]\n n$3=_fun_std::atomic_flag::test_and_set(n$0:std::atomic_flag*,n$2:int) [line 962, column 10]\n *&return:_Bool=n$3 [line 962, column 3]\n NULLIFY(&f); [line 962, column 3]\n NULLIFY(&m); [line 962, column 3]\n EXIT_SCOPE(_,n$0,n$2,n$3,f,m); [line 962, column 3]\n APPLY_ABSTRACTION; [line 962, column 3]\n " shape="box"] - - - "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_3" -> "atomic_flag_test_and_set_explicit#std(class std::atomic_flag)#7255134785098398782.e07b3d514a35d3db92d8d39e4db8a8e2_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" [label="1: Start std::atomic_signal_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_1" -> "atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" ; -"atomic_signal_fence#std#6355610664018428588.7a78429494f0c76954bdfa39cac652e7_2" [label="2: Exit std::atomic_signal_fence \n " color=yellow style=filled] - - -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" [label="1: Start std::atomic_thread_fence\nFormals: mo:int\nLocals: \n " color=yellow style=filled] - - - "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_1" -> "atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" ; -"atomic_thread_fence#std#3443284552162909508.f45950fd8a613f28d01dd70e54201ca7_2" [label="2: Exit std::atomic_thread_fence \n " color=yellow style=filled] - - "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_1" [label="1: Start internal::fun\nFormals: a:int\nLocals: \n " color=yellow style=filled] @@ -113,14 +11,14 @@ digraph cfg { "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_3" -> "fun#internal#3922054098004616643.55c3f2ad552457f847bc1570fce79224_2" ; -"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:int* \n " color=yellow style=filled] +"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:std::basic_string,std::allocator> x:std::shared_ptr \n " color=yellow style=filled] "main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_8" ; "main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n NULLIFY(&x); [line 22, column 1]\n NULLIFY(&s); [line 22, column 1]\n " color=yellow style=filled] -"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: Destruction(Scope) \n _=*&s:std::basic_string,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:int* [line 22, column 1]\n n$3=_fun_std::shared_ptr::~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,std::allocator> [line 22, column 1]\n n$1=_fun_std::basic_string,std::allocator>::~basic_string(&s:std::basic_string,std::allocator>*) injected [line 22, column 1]\n _=*&x:std::shared_ptr [line 22, column 1]\n n$3=_fun_std::shared_ptr::~shared_ptr(&x:std::shared_ptr*) injected [line 22, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,s,x); [line 22, column 1]\n APPLY_ABSTRACTION; [line 22, column 1]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ; @@ -128,7 +26,7 @@ digraph cfg { "main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; -"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 19, column 3]\n n$6=_fun_std::shared_ptr::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); [line 19, column 3]\n n$6=_fun_std::shared_ptr::shared_ptr(&x:std::shared_ptr*) [line 19, column 24]\n EXIT_SCOPE(n$6); [line 19, column 24]\n " shape="box"] "main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; @@ -170,611 +68,4 @@ digraph cfg { "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_3" -> "used_in_main_header#internal#16695915931787022844.43e60de71a2b141c8436dddf68ff1b63_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_1" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_3" -> "__infer_atomic_base#__infer_atomic_base#std#{13775723528237147754|constexpr}.1a6095f0713eed47cffb337d5bd470ba_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7791849041241637472|constexpr}.44bc6742f53642a5ddb7e71e80b34b68_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_1" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_3" -> "__infer_atomic_base#__infer_atomic_base#std#{11319810518798892734|constexpr}.74d2c2ce173fcccf9cf8bc068d35c1fb_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_1" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_3" -> "__infer_atomic_base#__infer_atomic_base#std#{18234009817680553112|constexpr}.7a1f00575eae64e359678097638ddc12_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16073524453317401930|constexpr}.d3f224e2d1fe7b0ad7e4e07024b91c5d_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_1" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_3" -> "__infer_atomic_base#__infer_atomic_base#std#{9938535674916741600|constexpr}.b3505ad067544b42cd3d24960993f2d2_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8782788136688727146|constexpr}.3f103dad2faa43c9afacd724927e0000_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7365870495610955464|constexpr}.7e9c5ad29861b93350b8ee38f6d0df14_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_1" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_3" -> "__infer_atomic_base#__infer_atomic_base#std#{14341025698771447512|constexpr}.a4ea01d510cd8d527bb600a45ccd1b98_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_1" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_3" -> "__infer_atomic_base#__infer_atomic_base#std#{7573412317894445992|constexpr}.ff0e487372c722b860a1cd876aa6c750_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10995699960611463466|constexpr}.b47fc7b50b63c00d13a29883101bbf91_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_1" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_3" -> "__infer_atomic_base#__infer_atomic_base#std#{16209782391084856520|constexpr}.c8b589ca28905ccc5291f33d793e0ce1_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_1" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_3" -> "__infer_atomic_base#__infer_atomic_base#std#{10976553734406539054|constexpr}.c08c69d90dff28bd294937b5d0343af8_2" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" [label="1: Start std::__infer_atomic_base::__infer_atomic_base\nFormals: this:std::__infer_atomic_base* desired:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_1" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" ; -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" [label="2: Exit std::__infer_atomic_base::__infer_atomic_base \n " color=yellow style=filled] - - -"__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_base* [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#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_3" -> "__infer_atomic_base#__infer_atomic_base#std#{8630701096989804934|constexpr}.85076a22c8a2e53a3f2fc540f31359c7_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2317220937806306842|constexpr}.d393fae7aac1307d35b11f21691789e9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4789001703898296148|constexpr}.e708f3dd8e07f928f0136c58ce71aa77_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14753850656660515810|conste.316dccad2dcde8efca58b19fda679f20_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:short\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:short [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{12484722408092055522|constexpr}.886571206f544c99c3746129fd658bc9_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{8591773473555052674|constexpr}.726ea5334f7395b295f6ac7cd555d392_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:signed char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:signed char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{9844392485801633554|constexpr}.6f8ca55944a0f4edf0c3180d150032cf_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16522029776639505920|constexpr}.39982a6970fd6e76224956305a5d7c79_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{16659147243517555676|constexpr}.63a0b0e30efb12599ce5b737bbb89996_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{2173708841126415188|constexpr}.18d3a9ecf5789e4e4e382f28729807c8_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned long [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{14576619656228466890|constexpr}.f782c04753c7831667ca63ed4883ec25_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{4588665662015601400|constexpr}.d5e8f3087b4e601b5439130cb84493b0_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:unsigned char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{812115561232181884|constexpr}.549c03fc14bf4fd6639150c4ad1efe18_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:char\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:char [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{15428870764710756536|constexpr}.d0b34811c384e20ccfd3c64a11df4e0a_2" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" [label="1: Start std::__infer_atomic_integral::__infer_atomic_integral\nFormals: this:std::__infer_atomic_integral* d:int\nLocals: \n " color=yellow style=filled] - - - "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_1" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" ; -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" [label="2: Exit std::__infer_atomic_integral::__infer_atomic_integral \n " color=yellow style=filled] - - -"__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" [label="3: Constructor Init \n n$1=*&this:std::__infer_atomic_integral* [line 185, column 53]\n n$2=*&d:int [line 185, column 60]\n n$3=_fun_std::__infer_atomic_base::__infer_atomic_base(n$1:std::__infer_atomic_integral*,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#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_3" -> "__infer_atomic_integral#__infer_atomic_integral#std#{10860901722123512962|constexpr}.f85ea1dfc790b10c2617a4d4f5cafd29_2" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_1" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" ; -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 406, column 50]\n n$2=*&d:unsigned short [line 406, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_3" -> "atomic#atomic#std#{18219637643674479567|constexpr}.a4a5467727100ba5642b3dca850c391b_2" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_1" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" ; -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 470, column 50]\n n$2=*&d:char [line 470, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_3" -> "atomic#atomic#std#{6824382166204133557|constexpr}.be44521bf079e2cb888037b21858e8e6_2" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_1" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" ; -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 442, column 50]\n n$2=*&d:unsigned long [line 442, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_3" -> "atomic#atomic#std#{12678320818314302393|constexpr}.5cd3aac69014d4e49ff04061ee1f1526_2" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:short\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_1" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" ; -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 397, column 50]\n n$2=*&d:short [line 397, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_3" -> "atomic#atomic#std#{17416607751267500557|constexpr}.44c96da43702ebbe4de34f6c26176ccb_2" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_1" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" ; -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 433, column 50]\n n$2=*&d:long [line 433, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_3" -> "atomic#atomic#std#{11783391945814293231|constexpr}.22775463bf145a69731b3305dffc4bb3_2" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_1" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" ; -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 415, column 50]\n n$2=*&d:int [line 415, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_3" -> "atomic#atomic#std#{10680712765411145881|constexpr}.b59b8272bcd92eac36f759f9bac15ee8_2" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_1" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" ; -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 388, column 50]\n n$2=*&d:unsigned char [line 388, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_3" -> "atomic#atomic#std#{9349229583258484711|constexpr}.9cbc6c1bc35116267ee41b36d8d25cb8_2" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_1" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" ; -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 479, column 50]\n n$2=*&d:char [line 479, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_3" -> "atomic#atomic#std#{8082860668582714463|constexpr}.dd2e5ecabe54fdef20aa889bb6f6f2e6_2" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:signed char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_1" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" ; -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 379, column 50]\n n$2=*&d:signed char [line 379, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_3" -> "atomic#atomic#std#{5346108577579494905|constexpr}.c15dd9aaf90a685e2a7f542bd251c605_2" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_1" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" ; -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 370, column 50]\n n$2=*&d:char [line 370, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_3" -> "atomic#atomic#std#{1569576068982126765|constexpr}.65635696899f54c5a6d6629c8a6ecb24_2" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:char\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_1" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" ; -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 488, column 50]\n n$2=*&d:char [line 488, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_3" -> "atomic#atomic#std#{2209937568484024999|constexpr}.6cdd85274a8b59daa2beabef472c513a_2" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned int\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_1" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" ; -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 424, column 50]\n n$2=*&d:unsigned int [line 424, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_3" -> "atomic#atomic#std#{10601848595505065591|constexpr}.a5e478d8ee519cb53e4dcde645e4dbe4_2" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:unsigned long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_1" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" ; -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 461, column 50]\n n$2=*&d:unsigned long long [line 461, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_3" -> "atomic#atomic#std#{8272996909294858201|constexpr}.4af18384f1b00a3d9942312d16de12f0_2" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" [label="1: Start std::atomic::atomic\nFormals: this:std::atomic* d:long long\nLocals: \n " color=yellow style=filled] - - - "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_1" -> "atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" ; -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_2" [label="2: Exit std::atomic::atomic \n " color=yellow style=filled] - - -"atomic#atomic#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" [label="3: Constructor Init \n n$1=*&this:std::atomic* [line 451, column 50]\n n$2=*&d:long long [line 451, column 57]\n n$3=_fun_std::__infer_atomic_integral::__infer_atomic_integral(n$1:std::atomic*,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#std#{13242178517795487559|constexpr}.b120a6c4bb0f1e110121c7888150bd59_3" -> "atomic#atomic#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:void*\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_1" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" ; -"model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_3" -> "model_set#shared_ptr#std#(4823396094259928824).b93622435d16d4672bfaf2944380f1be_2" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" [label="1: Start std::shared_ptr::model_set\nFormals: self:void const ** value:int\nLocals: \n " color=yellow style=filled] - - - "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_1" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" ; -"model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" [label="2: Exit std::shared_ptr::model_set \n " color=yellow style=filled] - - -"model_set#shared_ptr#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#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_3" -> "model_set#shared_ptr#std#(4842545188773067100).667f44fdf24815c87b171dd5a05fce4a_2" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" [label="1: Start std::shared_ptr::reset\nFormals: this:int** p:int*\nLocals: \n " color=yellow style=filled] - - - "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_1" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" ; -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" [label="2: Exit std::shared_ptr::reset \n " color=yellow style=filled] - - -"reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" [label="3: Call _fun_std::shared_ptr::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::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#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_3" -> "reset#shared_ptr#std#(5124141554651620350).9719d311878ee7b168751a9cb4fd4371_2" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" [label="1: Start std::shared_ptr::shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_1" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" ; -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" [label="2: Exit std::shared_ptr::shared_ptr \n " color=yellow style=filled] - - -"shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" [label="3: Call _fun_std::shared_ptr::model_set \n n$1=*&this:int** [line 97, column 15]\n n$2=_fun_std::shared_ptr::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_2" ; -"shared_ptr#shared_ptr#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::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#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_4" -> "shared_ptr#shared_ptr#std#{8741815665871862164|constexpr}.f88ab7f65e0cffeda975c68f431824d1_3" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" [label="1: Start std::shared_ptr::__infer_inner_destructor_~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_1" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" [label="2: Exit std::shared_ptr::__infer_inner_destructor_~shared_ptr \n " color=yellow style=filled] - - -"__infer_inner_destructor_~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_2" ; -"__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" [label="4: Call _fun_std::shared_ptr::reset \n n$4=*&this:int** [line 178, column 19]\n _=*n$4:int* [line 178, column 19]\n n$6=_fun_std::shared_ptr::reset(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#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_4" -> "__infer_inner_destructor_~shared_ptr#shared_ptr#std#(11841665744792554656).9277443e4e3f26d7cc1cd9ee0f2e3637_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" [label="1: Start std::shared_ptr::~shared_ptr\nFormals: this:int**\nLocals: \n " color=yellow style=filled] - - - "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_1" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" ; -"~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" [label="2: Exit std::shared_ptr::~shared_ptr \n " color=yellow style=filled] - - -"~shared_ptr#shared_ptr#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::__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#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_3" -> "~shared_ptr#shared_ptr#std#(11841665744792554656).57eab4801b4a7454644bdf188ec5633a_2" ; } diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/Makefile b/infer/tests/codetoanalyze/cpp/bufferoverrun/Makefile index caae6fe4a..a64d8f8f7 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/Makefile +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/Makefile @@ -6,7 +6,7 @@ TESTS_DIR = ../../.. # see explanations in cpp/errors/Makefile for the custom isystem -CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c +CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c INFER_OPTIONS = --bufferoverrun-only --ml-buckets cpp --no-filtering --debug-exceptions \ --project-root $(TESTS_DIR) --report-force-relative-path INFERPRINT_OPTIONS = --issues-tests diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_memory_UninitializedMemoryHacks.cpp b/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_memory_UninitializedMemoryHacks.cpp index 4384573c6..5b19f5e9c 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_memory_UninitializedMemoryHacks.cpp +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_memory_UninitializedMemoryHacks.cpp @@ -327,10 +327,10 @@ FOLLY_DECLARE_VECTOR_RESIZE_WITHOUT_INIT(unsigned char) #endif namespace infer_test { -void foo_string(std::string* s, std::size_t n) { - folly::resizeWithoutInitialization(*s, n); +void foo_string(std::string& s, std::size_t n) { + folly::resizeWithoutInitialization(s, n); } -void foo_vector(std::vector>& v, std::size_t n) { +void foo_vector(std::vector& v, std::size_t n) { folly::resizeWithoutInitialization(v, n); } } // namespace infer_test diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_split.cpp b/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_split.cpp index b6c1908d9..dd5cc6656 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_split.cpp +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/folly_split.cpp @@ -54,7 +54,7 @@ std::string do_not_ignore_empty2_Good(const std::string& s) { return v[0]; } -std::string do_not_ignore_empty_Bad(const std::string& s) { +std::string FN_do_not_ignore_empty_Bad(const std::string& s) { std::vector v; folly::split("delimiter", s, v, true); return v[0]; diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp b/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp index 339ec009b..9457b5d95 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp @@ -1,6 +1,4 @@ ../../facebook-clang-plugins/clang/install/include/c++/v1/string, std::operator==_>, 13, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::basic_string,std::allocator>::data,Assignment,Array access: Offset: [-oo, +oo] Size: [0, +oo]] -INFER_MODEL/cpp/include/infer_model/vector_bufferoverrun.h, std::vector>::erase, 2, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [,Parameter `this->infer_size`,,Unknown value from: std::distance_>,Binary operation: (this->infer_size - [-oo, +oo]):unsigned64] -INFER_MODEL/cpp/include/infer_model/vector_bufferoverrun.h, std::vector>::insert_>, 7, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [,Parameter `this->infer_size`,,Unknown value from: std::distance_>,Binary operation: (this->infer_size + [-oo, +oo]):unsigned64] codetoanalyze/cpp/bufferoverrun/arith.cpp, bool_overflow2_Good_FP, 2, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here] codetoanalyze/cpp/bufferoverrun/arith.cpp, bool_overflow2_Good_FP, 3, BUFFER_OVERRUN_L1, no_bucket, ERROR, [,Array declaration,Array access: Offset: 10 Size: 10] codetoanalyze/cpp/bufferoverrun/arith.cpp, bool_overflow_Bad, 2, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here] @@ -44,14 +42,9 @@ codetoanalyze/cpp/bufferoverrun/conditional_proof_obligation.cpp, call_condition codetoanalyze/cpp/bufferoverrun/conditional_proof_obligation.cpp, call_conditional_inequality_join2_2_Bad, 1, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Call,,Parameter `idx`,,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,,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,,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,,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, [,Assignment,,Call,Call,Unknown value from: std::distance,Call,Parameter `__n`,Assignment,Call,Parameter `__x->infer_size`,Call,Parameter `this->infer_size`,Assignment,Call,Parameter `__n`,Assignment,Call,Parameter `this->infer_size`,Assignment,Binary operation: (1 - [0, +oo]):unsigned64] +codetoanalyze/cpp/bufferoverrun/cpp_is_tricky.cpp, CppIsTricky::vector_size_Bad, 3, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [,Assignment,,Unknown value from: std::vector>::size,Binary operation: (1 - [-oo, +oo]):unsigned64] codetoanalyze/cpp/bufferoverrun/external.cpp, extern_bad, 5, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,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, [,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,,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,,Parameter `index`,,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,,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,,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, [,Call,Assignment,,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, [,Call,Parameter `length`,Assignment,,Array declaration,Array access: Offset: 10 Size: 10] codetoanalyze/cpp/bufferoverrun/realloc.cpp, realloc_Bad, 4, BUFFER_OVERRUN_L1, no_bucket, ERROR, [,Assignment,,Array declaration,Assignment,Array access: Offset: 5 Size: 5] @@ -68,14 +61,11 @@ codetoanalyze/cpp/bufferoverrun/relation.cpp, call2_plus_params_Bad, 0, BUFFER_O codetoanalyze/cpp/bufferoverrun/remove_temps.cpp, C::foo_Bad, 1, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here] codetoanalyze/cpp/bufferoverrun/remove_temps.cpp, C::foo_Bad, 6, BUFFER_OVERRUN_L1, no_bucket, ERROR, [,Array declaration,Array access: Offset: 10 Size: 5] codetoanalyze/cpp/bufferoverrun/remove_temps.cpp, C::goo, 1, CONDITION_ALWAYS_TRUE, no_bucket, WARNING, [Here] -codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM::fB_FP, 0, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [,Parameter `*o`,Call,Parameter `*k`,Call,Parameter `*k`,Assignment,Assignment,Binary operation: ([-oo, +oo] + 1):unsigned64] -codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM::lI_FP, 2, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [,Call,Parameter `*o`,Call,Parameter `*k`,Call,Parameter `*k`,Assignment,Assignment,Assignment,Assignment,Binary operation: ([-oo, +oo] - 1):signed32] -codetoanalyze/cpp/bufferoverrun/repro1.cpp, am_Good_FP, 5, BUFFER_OVERRUN_L5, no_bucket, ERROR, [Call,Call,Call,Assignment,Assignment,Call,Parameter `t->bI`,Call,Assignment,Call,Parameter `bi`,Call,Parameter `__n`,Call,,Parameter `index`,,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,,Parameter `bi`,Binary operation: ([-oo, +oo] - 1):signed32 by call to `ral_FP` ] -codetoanalyze/cpp/bufferoverrun/repro1.cpp, gal_FP, 4, BUFFER_OVERRUN_L5, no_bucket, ERROR, [Call,Parameter `this->b.infer_size`,Call,Parameter `this->b.infer_size`,Call,Parameter `__n`,Call,,Parameter `index`,,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: [0, +oo] Size: [0, +oo]] -codetoanalyze/cpp/bufferoverrun/repro1.cpp, gal_FP, 4, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Parameter `this->b.infer_size`,Call,Parameter `this->b.infer_size`,Call,Parameter `this->infer_size`,Call,,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,,Parameter `index`,,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,,Parameter `this->infer_size`,Binary operation: (4 × [0, +oo]):unsigned64] +codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM::fB_FP, 0, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [,Unknown value from: std::vector,std::default_delete>>,std::allocator,std::default_delete>>>>::size,Binary operation: ([-oo, +oo] + 1):unsigned64] +codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM::lI_FP, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::unique_ptr,std::default_delete>>::operator->,Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM::lI_FP, 2, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [,Call,Unknown value from: std::vector,std::default_delete>>,std::allocator,std::default_delete>>>>::size,Assignment,Assignment,Binary operation: ([-oo, +oo] - 1):signed32] +codetoanalyze/cpp/bufferoverrun/repro1.cpp, LM::uI, 0, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::unique_ptr,std::default_delete>>::operator->,Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/repro1.cpp, am_Good_FP, 5, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Call,Assignment,Assignment,Call,Parameter `t->bI`,Call,Assignment,Call,,Parameter `bi`,Binary operation: ([-oo, +oo] - 1):signed32 by call to `ral_good` ] codetoanalyze/cpp/bufferoverrun/simple_vector.cpp, my_vector_oob_Bad, 2, BUFFER_OVERRUN_L2, no_bucket, ERROR, [Parameter `v->_size`,Call,,Parameter `i`,,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, [,Array declaration,Array access: Offset: 10 Size: 5] codetoanalyze/cpp/bufferoverrun/std_array.cpp, array_iter2_Bad, 5, BUFFER_OVERRUN_L1, no_bucket, ERROR, [,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, [,Parameter `this->h[*]`,Array access: Offset: 10 Size: 10] codetoanalyze/cpp/bufferoverrun/this.cpp, CThis::access_Bad, 2, BUFFER_OVERRUN_L1, no_bucket, ERROR, [,Parameter `this->n`,,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, [,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,,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64] -codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Bad, 6, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Call,Call,Assignment,Call,Parameter `__n`,Call,,Parameter `index`,,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 6 Size: 5] -codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Good, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Call,,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64] -codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Good_2, 3, INTEGER_OVERFLOW_L5, no_bucket, ERROR, [Call,Call,Assignment,Call,,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64] -codetoanalyze/cpp/bufferoverrun/vector.cpp, data_Bad, 4, BUFFER_OVERRUN_L1, no_bucket, ERROR, [,Assignment,,Call,Parameter `__n`,Call,Parameter `__n`,Assignment,Call,Parameter `this->infer_size`,Array declaration,Assignment,Assignment,Array access: Offset: 10 Size: 5] -codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 7, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [Call,Unknown value from: std::distance_>,Assignment,Call,,Parameter `this->infer_size`,Binary operation: ([0, +oo] + 1):unsigned64] -codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 10, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [Call,Unknown value from: std::distance_>,Assignment,Call,Parameter `this->infer_size`,Assignment,Call,Parameter `this->infer_size`,Assignment,Call,Parameter `this->infer_size`,Assignment,Call,,Parameter `this->infer_size`,,Parameter `__n`,Binary operation: ([3, +oo] + 42):unsigned64] -codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 16, BUFFER_OVERRUN_U5, no_bucket, ERROR, [Unknown value from: __infer_skip_function,Call,,Parameter `*__il`,Array access: Offset: [-oo, +oo] Size: [0, +oo]] -codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 17, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [Call,Call,Unknown value from: std::distance,Call,Parameter `__n`,Assignment,Call,Parameter `this->infer_size`,Call,,Parameter `this->infer_size`,Binary operation: (4 × [0, +oo]):unsigned64] -codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 18, BUFFER_OVERRUN_U5, no_bucket, ERROR, [Call,Call,Unknown value from: std::distance,Call,Parameter `__n`,Assignment,Call,Parameter `__n`,Call,,Parameter `index`,,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 1 Size: [0, +oo]] -codetoanalyze/cpp/bufferoverrun/vector.cpp, out_of_bound_Bad, 2, BUFFER_OVERRUN_L2, no_bucket, ERROR, [Parameter `v->infer_size`,Call,Parameter `__n`,Call,,Parameter `index`,,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: v->infer_size Size: v->infer_size] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_assert_Good, 6, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_assert_Good_2, 6, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_constructor_Good, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_data_Good, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::data,Assignment,Array access: Offset: [-oo, +oo] (⇐ [-oo, +oo] + 4) Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_push_back_Good, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_reserve_Good, 4, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access2, 6, INTEGER_OVERFLOW_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::size,Binary operation: ([0, +oo] + 1):unsigned32] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access2, 7, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::size,,Unknown value from: std::vector>::size,Array declaration,Array access: Offset: [0, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access3_Good, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access4, 2, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, FP_safe_access5, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, assert_Bad, 6, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, data_Bad, 4, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],,Unknown value from: std::vector>::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, [,Unknown value from: std::vector>::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,,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,,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,,Parameter `index`,,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 1 Size: 1] -codetoanalyze/cpp/bufferoverrun/vector.cpp, reserve_Bad, 3, BUFFER_OVERRUN_L1, no_bucket, ERROR, [Call,Call,Assignment,Call,Parameter `__n`,Call,,Parameter `index`,,Parameter `this->infer_size`,Array declaration,Assignment,Array access: Offset: 0 Size: 0] -codetoanalyze/cpp/bufferoverrun/vector.cpp, reserve_Bad, 3, INFERBO_ALLOC_IS_ZERO, no_bucket, ERROR, [Call,Call,Assignment,Call,Parameter `this->infer_size`,Call,Parameter `this->infer_size`,Allocation: Length: 0] -codetoanalyze/cpp/bufferoverrun/vector.cpp, safe_access3_Good, 2, CONDITION_ALWAYS_FALSE, no_bucket, WARNING, [Here] +codetoanalyze/cpp/bufferoverrun/vector.cpp, push_back_Bad, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] +codetoanalyze/cpp/bufferoverrun/vector.cpp, reserve_Bad, 3, BUFFER_OVERRUN_U5, no_bucket, ERROR, [,Unknown value from: std::vector>::operator[],Array access: Offset: [-oo, +oo] Size: [0, +oo]] codetoanalyze/cpp/bufferoverrun/void_ptr.cpp, FP_call_casting_void_ptr_Ok, 2, BUFFER_OVERRUN_L5, no_bucket, ERROR, [Array declaration,Call,,Parameter `*p`,Assignment,Array access: Offset: 14 Size: 2 by call to `casting_void_ptr` ] diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/repro1.cpp b/infer/tests/codetoanalyze/cpp/bufferoverrun/repro1.cpp index 36d707b23..36c23dad2 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/repro1.cpp +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/repro1.cpp @@ -103,7 +103,7 @@ typedef TFM LMDM; static LM* al; -static inline void ral_FP(lt* t, ai a) { +static inline void ral_good(lt* t, ai a) { ASSERT(t); lo o = alo(a); al->u(*t, o); @@ -138,5 +138,5 @@ static void am_Good_FP(im* it) { const ai a = aft(ch->i1); lt at; gal_FP(&at, a); - ral_FP(&at, a); + ral_good(&at, a); } diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp b/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp index ff4151135..6453a1676 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp @@ -13,12 +13,12 @@ void out_of_bound_Bad(std::vector v) { v[n] = 1; } -void constructor_Good() { +void FP_constructor_Good() { std::vector v(1); v[0] = 2; } -void push_back_Good() { +void FP_push_back_Good() { std::vector v; v.push_back(1); v[0] = 2; @@ -30,7 +30,7 @@ void push_back_Bad() { v[1] = 2; } -void reserve_Good() { +void FP_reserve_Good() { std::vector v; v.reserve(42); v.push_back(1); @@ -43,7 +43,7 @@ void reserve_Bad() { v[0] = 2; } -void safe_access(std::vector v) { +void FP_safe_access(std::vector v) { if (v.size() >= 10) { v[9] = 1; } @@ -51,10 +51,10 @@ void safe_access(std::vector v) { void call_safe_access_Good() { std::vector v(5, 0); - safe_access(v); + FP_safe_access(v); } -void safe_access2(std::vector v) { +void FP_safe_access2(std::vector v) { if (v.empty()) { return; } @@ -67,50 +67,17 @@ void safe_access2(std::vector v) { void call_safe_access2_Good() { std::vector v; - safe_access2(v); + FP_safe_access2(v); } -struct Int_no_copy { - Int_no_copy(Int_no_copy&) = delete; - Int_no_copy(const Int_no_copy&) = delete; - Int_no_copy(volatile Int_no_copy&) = delete; - Int_no_copy(const volatile Int_no_copy&) = delete; - Int_no_copy(int i) : _i(i) {} - int get_int() { return _i; } - - private: - int _i; -}; - -void just_test_model_FP(void) { - std::vector 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 l; - std::vector v2(l.begin(), l.end()); - v2.insert(v2.cbegin(), l.begin(), l.end()); - v2.assign(l.begin(), l.end()); - const std::vector v3{1, 2, 3}; - int y = v3[0]; - int z = v3.at(1); -} - -void safe_access3_Good() { +void FP_safe_access3_Good() { std::vector v; if (!v.empty()) { v[0] = 1; } } -void safe_access4(std::vector v) { +void FP_safe_access4(std::vector v) { if (!v.empty()) { v[0] = 1; } @@ -118,10 +85,10 @@ void safe_access4(std::vector v) { void call_safe_access4_Good() { std::vector v; - safe_access4(v); + FP_safe_access4(v); } -void safe_access5(std::vector v) { +void FP_safe_access5(std::vector v) { if (v.empty()) { } else { v[0] = 1; @@ -130,7 +97,7 @@ void safe_access5(std::vector v) { void call_safe_access5_Good() { std::vector v; - safe_access5(v); + FP_safe_access5(v); } void safe_access6(std::vector v) { @@ -143,7 +110,7 @@ void call_safe_access6_Good() { safe_access6(v); } -void data_Good() { +void FP_data_Good() { std::vector v(5); int* p = v.data(); p[4] = 1; @@ -156,7 +123,7 @@ void data_Bad() { p[v[4]] = 1; } -void assert_Good() { +void FP_assert_Good() { std::vector v; for (int i = 0; i < 5; i++) { v.push_back(1); @@ -165,7 +132,7 @@ void assert_Good() { v[4] = 1; } -void assert_Good_2(int x) { +void FP_assert_Good_2(int x) { std::vector v; for (int i = 0; i < 5; i++) { v.push_back(1); diff --git a/infer/tests/codetoanalyze/cpp/errors/Makefile b/infer/tests/codetoanalyze/cpp/errors/Makefile index 1f263feae..beb20560b 100644 --- a/infer/tests/codetoanalyze/cpp/errors/Makefile +++ b/infer/tests/codetoanalyze/cpp/errors/Makefile @@ -8,7 +8,7 @@ TESTS_DIR = ../../.. # use our own clang's standard library so that the tests are uniform across distributions CLANG_OPTIONS = -x c++ -std=c++1y -isystem$(ROOT_DIR) -c --stdlib=libc++ INFER_OPTIONS = --biabduction-only --ml-buckets cpp --debug-exceptions --project-root $(TESTS_DIR) \ - --pmd-xml --report-custom-error --cxx-infer-headers + --pmd-xml --report-custom-error INFERPRINT_OPTIONS = --issues-tests SOURCES = \ diff --git a/infer/tests/codetoanalyze/cpp/errors/issues.exp b/infer/tests/codetoanalyze/cpp/errors/issues.exp index b6dcf3a7a..4f41fc84b 100644 --- a/infer/tests/codetoanalyze/cpp/errors/issues.exp +++ b/infer/tests/codetoanalyze/cpp/errors/issues.exp @@ -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!=, 1, Abduction_case_not_implemented, no_bucket, ERROR, [start of procedure std::operator!=()] -INFER_MODEL/cpp/include/infer_model/unique_ptr.h, std::unique_ptr>::__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::Pointer,start of procedure Pointer,return from a call to unique_ptr_with_deleter::Pointer::Pointer] -INFER_MODEL/cpp/include/infer_model/unique_ptr.h, std::unique_ptr>::__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::Pointer,start of procedure Pointer,return from a call to unique_ptr_with_deleter::Pointer::Pointer] codetoanalyze/cpp/errors/biabduction/process_splitting_assert.cpp, fail, 2, NULL_DEREFERENCE, B5, ERROR, [start of procedure fail(),Taking true branch] codetoanalyze/cpp/errors/c_tests/c_bugs.cpp, crash_fgetc, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure crash_fgetc()] codetoanalyze/cpp/errors/c_tests/c_bugs.cpp, crash_getc, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure crash_getc()] @@ -18,14 +14,22 @@ codetoanalyze/cpp/errors/include_header/header2.h, header2::div0_templ, 1, codetoanalyze/cpp/errors/memory_leaks/array_leak.cpp, leak, 4, MEMORY_LEAK, CPP, ERROR, [start of procedure leak()] codetoanalyze/cpp/errors/memory_leaks/object_leak.cpp, object_leak, 0, MEMORY_LEAK, CPP, ERROR, [start of procedure object_leak(),start of procedure Rectangle,return from a call to Rectangle::Rectangle] codetoanalyze/cpp/errors/memory_leaks/raii_malloc.cpp, memory_leak, 0, MEMORY_LEAK, no_bucket, ERROR, [start of procedure memory_leak()] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe1_bad(),Taking true branch,Taking true branch,Taking true branch] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe2_bad(),Taking true branch,Taking true branch,Taking true branch] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe1_bad(),Taking true branch,Taking true branch,Taking true branch] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe2_bad(),Taking true branch,Taking true branch,Taking true branch] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::exchange_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::exchange_possible_npe_bad(),Taking true branch,Taking true branch] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::is_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::is_zero_possible_npe_bad(),start of procedure A,return from a call to atomic_test::A::A,start of procedure add,return from a call to atomic_test::A::add,start of procedure sub,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is true,return from a call to atomic_test::A::is_zero,Taking true branch] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::load_store_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::load_store_possible_npe_bad(),Taking true branch] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::not_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::not_zero_possible_npe_bad(),start of procedure A,return from a call to atomic_test::A::A,start of procedure sub,return from a call to atomic_test::A::sub,start of procedure sub,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A::is_zero,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_strong_impossible_npe1_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_strong_impossible_npe1_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking false branch,Taking false branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_strong_impossible_npe2_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_strong_impossible_npe2_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking false branch,Taking false branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_weak_impossible_npe1_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_weak_impossible_npe1_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking false branch,Taking false branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_compare_exchange_weak_impossible_npe2_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_compare_exchange_weak_impossible_npe2_ok(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking false branch,Taking false branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_exchange_impossible_npe_ok, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_exchange_impossible_npe_ok(),Skipping atomic: method has no implementation,Skipping exchange: method has no implementation,Taking false branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_is_zero_impossible_npe_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_is_zero_impossible_npe_ok(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A::is_zero,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_load_store_impossible_npe_ok, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_load_store_impossible_npe_ok(),Skipping atomic: method has no implementation,Skipping store: method has no implementation,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::FP_not_zero_impossible_npe_ok, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::FP_not_zero_impossible_npe_ok(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure is_zero,Condition is true,return from a call to atomic_test::A::is_zero,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe1_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking true branch,Taking true branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_strong_possible_npe2_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_strong: method has no implementation,Taking true branch,Taking true branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe1_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe1_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking true branch,Taking true branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe2_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::compare_exchange_weak_possible_npe2_bad(),Skipping atomic: method has no implementation,Skipping compare_exchange_weak: method has no implementation,Taking true branch,Taking true branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::exchange_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::exchange_possible_npe_bad(),Skipping atomic: method has no implementation,Skipping exchange: method has no implementation,Taking true branch,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::is_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::is_zero_possible_npe_bad(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure add,Skipping operator++: method has no implementation,return from a call to atomic_test::A::add,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is true,return from a call to atomic_test::A::is_zero,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::load_store_possible_npe_bad, 5, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::load_store_possible_npe_bad(),Skipping atomic: method has no implementation,Skipping store: method has no implementation,Taking true branch] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::not_zero_possible_npe_bad, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure atomic_test::not_zero_possible_npe_bad(),start of procedure A,Skipping atomic: method has no implementation,return from a call to atomic_test::A::A,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure sub,Skipping operator--: method has no implementation,return from a call to atomic_test::A::sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A::is_zero,Taking true branch] codetoanalyze/cpp/errors/models/cmp.cpp, operator_eq_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure operator_eq_bad(),start of procedure operator==(),Condition is true,Condition is true,return from a call to operator==,Taking true branch] codetoanalyze/cpp/errors/models/cmp.cpp, operator_ge_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure operator_ge_bad(),start of procedure operator>=(),start of procedure operator<(),Taking false branch,Taking false branch,Condition is false,return from a call to operator<,Condition is false,return from a call to operator>=,Taking true branch] codetoanalyze/cpp/errors/models/cmp.cpp, operator_gt_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure operator_gt_bad(),start of procedure operator>(),start of procedure operator<(),Taking false branch,Taking false branch,Condition is true,return from a call to operator<,return from a call to operator>,Taking true branch] @@ -60,16 +64,13 @@ codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_dere codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_bad(),start of procedure cancellation_test::is_size_zero(),start of procedure begin,return from a call to cancellation_test::Test::begin,start of procedure end,return from a call to cancellation_test::Test::end,Condition is true,return from a call to cancellation_test::is_size_zero,Taking true branch] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter2_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] -codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe(),start of procedure npe_added_to_b1::deref_ref()] -codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe_person, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe_person(),start of procedure Person,return from a call to npe_added_to_b1::Person::Person,start of procedure npe_added_to_b1::deref_person()] +codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe_person_bad, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe_person_bad(),start of procedure Person,return from a call to npe_added_to_b1::Person::Person,start of procedure npe_added_to_b1::deref_person()] codetoanalyze/cpp/errors/npe/null_returned_by_method.cpp, testNullDeref, 3, NULL_DEREFERENCE, B2, ERROR, [start of procedure testNullDeref(),Taking true branch,start of procedure getNull,return from a call to XFactory::getNull] codetoanalyze/cpp/errors/npe/object_deref.cpp, object_deref::derefNullField, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure object_deref::derefNullField(),start of procedure object_deref::getNull(),return from a call to object_deref::getNull] -codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_const_skip2_then_split_case_ok, 5, MEMORY_LEAK, CPP, ERROR, [start of procedure FP_const_skip2_then_split_case_ok(),Skipping skip_const2(): method has no implementation,start of procedure test_pointer(),Taking true branch,return from a call to test_pointer] -codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_const_skip_then_split_case_ok, 6, MEMORY_LEAK, CPP, ERROR, [start of procedure FP_const_skip_then_split_case_ok(),Skipping skip_const(): method has no implementation,start of procedure test_pointer(),Taking true branch,return from a call to test_pointer] -codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_typedef_skip_then_split_case_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure FP_typedef_skip_then_split_case_ok(),Skipping skip_typedef(): method has no implementation] -codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, FP_typedef_skip_then_split_case_ok, 4, NULL_DEREFERENCE, B5, ERROR, [start of procedure FP_typedef_skip_then_split_case_ok(),Skipping skip_typedef(): method has no implementation,start of procedure test_pointer(),Taking false branch,return from a call to test_pointer] -codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, skip_then_split_case_bad, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure skip_then_split_case_bad(),Skipping skip_no_const(): method has no implementation] -codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, skip_then_split_case_bad, 5, NULL_DEREFERENCE, B5, ERROR, [start of procedure skip_then_split_case_bad(),Skipping skip_no_const(): method has no implementation,start of procedure test_pointer(),Taking false branch,return from a call to test_pointer] +codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_FP_skip_then_split_case_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_FP_skip_then_split_case_bad(),Skipping ~shared_ptr: method has no implementation,Skipping skip_no_const(): method has no implementation] +codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_const_skip2_then_split_case_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_const_skip2_then_split_case_ok(),Skipping ~shared_ptr: method has no implementation,Skipping skip_const2(): method has no implementation] +codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_const_skip_then_split_case_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_const_skip_then_split_case_ok(),Skipping ~shared_ptr: method has no implementation,Skipping skip_const(): method has no implementation] +codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp, ERROR_typedef_skip_then_split_case_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_typedef_skip_then_split_case_ok(),Skipping ~shared_ptr: method has no implementation,Skipping skip_typedef(): method has no implementation] codetoanalyze/cpp/errors/numeric/min_max.cpp, max_X_inv_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure max_X_inv_div0(),start of procedure X_inv,return from a call to X_inv::X_inv,start of procedure X_inv,return from a call to X_inv::X_inv] codetoanalyze/cpp/errors/numeric/min_max.cpp, max_int_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure max_int_div0()] codetoanalyze/cpp/errors/numeric/min_max.cpp, min_X_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure min_X_div0(),start of procedure X,return from a call to X::X,start of procedure X,return from a call to X::X] @@ -78,84 +79,27 @@ codetoanalyze/cpp/errors/overwrite_attribute/main.cpp, testSetIntValue, 3, DIVID codetoanalyze/cpp/errors/pointers/unintialized.cpp, known_ctor_dangling_bad, 2, DANGLING_POINTER_DEREFERENCE, no_bucket, ERROR, [start of procedure known_ctor_dangling_bad(),start of procedure TestDangling,return from a call to TestDangling::TestDangling] codetoanalyze/cpp/errors/pointers/unintialized.cpp, uninitialized_dangling_bad, 2, DANGLING_POINTER_DEREFERENCE, no_bucket, ERROR, [start of procedure uninitialized_dangling_bad()] codetoanalyze/cpp/errors/resource_leaks/raii.cpp, resource_leak, 7, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure resource_leak(),Taking false branch] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const1, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const1()] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const2()] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const3, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const3()] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_const4, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_const4()] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile1, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile1()] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile2()] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile3, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile3()] -codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile4, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure test_volatile4()] -codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::deref_after_move_crash, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure deref_after_mode_example::deref_after_move_crash(),start of procedure Person,return from a call to deref_after_mode_example::Person::Person,start of procedure move_age,return from a call to deref_after_mode_example::Person::move_age,start of procedure access_age] -codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::deref_after_move_ok, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure deref_after_mode_example::deref_after_move_ok(),start of procedure Person,return from a call to deref_after_mode_example::Person::Person,start of procedure move_age,return from a call to deref_after_mode_example::Person::move_age,start of procedure ~Person,start of procedure __infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::__infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::~Person] -codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::deref_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure deref_after_mode_example::deref_ok(),start of procedure Person,return from a call to deref_after_mode_example::Person::Person,start of procedure access_age,return from a call to deref_after_mode_example::Person::access_age,start of procedure ~Person,start of procedure __infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::__infer_inner_destructor_~Person,return from a call to deref_after_mode_example::Person::~Person] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::aliasing_member_null_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::aliasing_member_null_bad(),start of procedure shared_ptr_constructors::aliasing_construct_from_internal(),start of procedure shared_ptr_constructors::internal_null_def(),Skipping shared_ptr_constructors::external_def(): method has no implementation,return from a call to shared_ptr_constructors::internal_null_def,Taking false branch,return from a call to shared_ptr_constructors::aliasing_construct_from_internal] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base1_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base1_null_f1_deref(),start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,start of procedure shared_ptr_constructors::getFromBase1(),return from a call to shared_ptr_constructors::getFromBase1] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base1_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base1_nullptr_deref(),start of procedure shared_ptr_constructors::getFromBase1(),return from a call to shared_ptr_constructors::getFromBase1,start of procedure Base] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base2_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base2_null_f1_deref(),start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,start of procedure shared_ptr_constructors::getFromBase2(),return from a call to shared_ptr_constructors::getFromBase2] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base2_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_base2_nullptr_deref(),start of procedure shared_ptr_constructors::getFromBase2(),return from a call to shared_ptr_constructors::getFromBase2,start of procedure Base] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived1_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived1_null_f1_deref(),start of procedure Derived,start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,return from a call to shared_ptr_constructors::Derived::Derived,start of procedure shared_ptr_constructors::getFromDerived1(),return from a call to shared_ptr_constructors::getFromDerived1] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived1_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived1_nullptr_deref(),start of procedure shared_ptr_constructors::getFromDerived1(),return from a call to shared_ptr_constructors::getFromDerived1,start of procedure Base] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived2_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived2_null_f1_deref(),start of procedure Derived,start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,return from a call to shared_ptr_constructors::Derived::Derived,start of procedure shared_ptr_constructors::getFromDerived2(),return from a call to shared_ptr_constructors::getFromDerived2] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived2_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived2_nullptr_deref(),start of procedure shared_ptr_constructors::getFromDerived2(),return from a call to shared_ptr_constructors::getFromDerived2,start of procedure Base] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived3_null_f1_deref, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived3_null_f1_deref(),start of procedure Derived,start of procedure Base,return from a call to shared_ptr_constructors::Base::Base,return from a call to shared_ptr_constructors::Derived::Derived,start of procedure shared_ptr_constructors::getFromDerived3(),return from a call to shared_ptr_constructors::getFromDerived3] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_derived3_nullptr_deref, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr_constructors::get_from_derived3_nullptr_deref(),start of procedure shared_ptr_constructors::getFromDerived3(),return from a call to shared_ptr_constructors::getFromDerived3,start of procedure Base] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_field_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_field_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_field_deref2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_field_deref2()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::empty_ptr_method_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::empty_ptr_method_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::nullptr_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::nullptr_ptr_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref2, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref2()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref2, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref2()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_null_deref2, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::reset_ptr_null_deref2()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_ok_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::reset_ptr_ok_deref2, 4, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::reset_ptr_ok_deref2()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_assign_null_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::shared_ptr_assign_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_assign_null_deref, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::shared_ptr_assign_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_assign_ok_deref, 5, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::shared_ptr_assign_ok_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_copy_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::shared_ptr_copy_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_copy_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::shared_ptr_copy_ok_deref()] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::shared_ptr_move_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure shared_ptr::shared_ptr_move_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_array_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_array_ptr_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_field_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref2, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_field_deref2()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::empty_ptr_method_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::empty_ptr_method_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::nullptr_array_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::nullptr_array_ptr_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::nullptr_ptr_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::nullptr_ptr_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref2()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref2()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::reset_ptr_null_deref2()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_ok_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::reset_ptr_ok_deref2, 4, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::reset_ptr_ok_deref2()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_null_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_assign_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_null_deref, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::unique_ptr_assign_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_ok_deref, 5, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_assign_ok_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_copy_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::unique_ptr_copy_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_move_null_deref, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure unique_ptr::unique_ptr_move_null_deref()] -codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_move_ok_deref, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_move_ok_deref()] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedBaseAssign_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedBaseAssign_bad(),start of procedure weak_ptr_constructors::fromSharedBaseAssign(),return from a call to weak_ptr_constructors::fromSharedBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedBaseConstr_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedBaseConstr_bad(),start of procedure weak_ptr_constructors::fromSharedBaseConstr(),return from a call to weak_ptr_constructors::fromSharedBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedDerivedAssign_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedDerivedAssign_bad(),start of procedure weak_ptr_constructors::fromSharedDerivedAssign(),return from a call to weak_ptr_constructors::fromSharedDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr2_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr2_bad(),start of procedure weak_ptr_constructors::fromSharedDerivedConstr2(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr2,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr_bad, 4, Bad_footprint, no_bucket, ERROR, [start of procedure weak_ptr_derefs::FN_safeGetFromSharedDerivedConstr_bad(),start of procedure weak_ptr_constructors::fromSharedDerivedConstr(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseAssign_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseAssign_bad(),start of procedure weak_ptr_constructors::fromWeakBaseAssign(),return from a call to weak_ptr_constructors::fromWeakBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseConstr_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseConstr_bad(),start of procedure weak_ptr_constructors::fromWeakBaseConstr(),return from a call to weak_ptr_constructors::fromWeakBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad(),start of procedure weak_ptr_constructors::fromWeakDerivedAssign(),return from a call to weak_ptr_constructors::fromWeakDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad(),start of procedure weak_ptr_constructors::fromWeakDerivedConstr(),return from a call to weak_ptr_constructors::fromWeakDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Loop condition is false. Leaving loop,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::empty_weak_lock_returns_null_bad, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_observers::empty_weak_lock_returns_null_bad()] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_after_reset_bad, 5, expired after weak_ptr reset is true, no_bucket, ERROR, [start of procedure weak_ptr_observers::expired_after_reset_bad(),Taking true branch,return from a call to weak_ptr_observers::expired_after_reset_bad] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_after_swap_bad, 6, expired after weak_ptr swap with empty is true, no_bucket, ERROR, [start of procedure weak_ptr_observers::expired_after_swap_bad(),Taking true branch,return from a call to weak_ptr_observers::expired_after_swap_bad] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_empty_bad, 5, expired on empty weak_ptr is true, no_bucket, ERROR, [start of procedure weak_ptr_observers::expired_empty_bad(),Taking true branch,return from a call to weak_ptr_observers::expired_empty_bad] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_means_null_bad, 3, NULL_DEREFERENCE, B2, ERROR, [start of procedure weak_ptr_observers::expired_means_null_bad(),Taking true branch] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::lock_can_be_null_bad, 2, NULL_DEREFERENCE, B2, ERROR, [start of procedure weak_ptr_observers::lock_can_be_null_bad()] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::shared_still_in_scope_good_FP, 6, NULL_DEREFERENCE, B1, ERROR, [start of procedure weak_ptr_observers::shared_still_in_scope_good_FP()] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::use_count_after_reset_bad, 5, use_count after weak_ptr reset is 0, no_bucket, ERROR, [start of procedure weak_ptr_observers::use_count_after_reset_bad(),Taking true branch,return from a call to weak_ptr_observers::use_count_after_reset_bad] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::use_count_empty_bad, 5, use_count on empty weak_ptr is 0, no_bucket, ERROR, [start of procedure weak_ptr_observers::use_count_empty_bad(),Taking true branch,return from a call to weak_ptr_observers::use_count_empty_bad] +codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::Person::Person, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure Person,Skipping unique_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::ERROR_shared_ptr_check_notnull_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure shared_ptr::ERROR_shared_ptr_check_notnull_ok(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::ERROR_shared_ptr_check_null_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure shared_ptr::ERROR_shared_ptr_check_null_ok(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_reset_ptr_null_deref2_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_reset_ptr_null_deref2_bad(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_reset_ptr_null_deref2_bad, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_reset_ptr_null_deref2_bad(),Skipping shared_ptr: method has no implementation,Skipping reset: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_reset_ptr_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_reset_ptr_null_deref_bad(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_shared_ptr_assign_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_shared_ptr_assign_null_deref_bad(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FN_shared_ptr_move_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FN_shared_ptr_move_null_deref_bad(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_reset_ptr_deref2_ok, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_reset_ptr_deref2_ok(),Skipping shared_ptr: method has no implementation,Skipping reset: method has no implementation,Skipping reset: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_reset_ptr_deref_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_reset_ptr_deref_ok(),Skipping shared_ptr: method has no implementation,Skipping reset: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_shared_ptr_assign_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_shared_ptr_assign_deref_ok(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp, shared_ptr::FP_shared_ptr_copy_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure shared_ptr::FP_shared_ptr_copy_deref_ok(),Skipping shared_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_FP_reset_ptr_null_deref2_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_FP_reset_ptr_null_deref2_bad(),Skipping unique_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_FP_reset_ptr_null_deref2_bad, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_FP_reset_ptr_null_deref2_bad(),Skipping unique_ptr: method has no implementation,Skipping reset: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_FP_reset_ptr_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_FP_reset_ptr_null_deref_bad(),Skipping unique_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_unique_ptr_assign_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_unique_ptr_assign_null_deref_bad(),Skipping unique_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FN_unique_ptr_move_null_deref_bad, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FN_unique_ptr_move_null_deref_bad(),Skipping unique_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FP_reset_ptr_deref2_ok, 3, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FP_reset_ptr_deref2_ok(),Skipping unique_ptr: method has no implementation,Skipping reset: method has no implementation,Skipping reset: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FP_reset_ptr_deref_ok, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FP_reset_ptr_deref_ok(),Skipping unique_ptr: method has no implementation,Skipping reset: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::FP_unique_ptr_move_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::FP_unique_ptr_move_deref_ok(),Skipping unique_ptr: method has no implementation] +codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_assign_deref_ok, 1, MEMORY_LEAK, CPP, ERROR, [start of procedure unique_ptr::unique_ptr_assign_deref_ok(),Skipping unique_ptr: method has no implementation] codetoanalyze/cpp/errors/stack_escape/basic.cpp, basic_escape_local_bad, 3, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [start of procedure basic_escape_local_bad(),return from a call to basic_escape_local_bad] codetoanalyze/cpp/errors/stack_escape/basic.cpp, basic_escape_param_bad, 0, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [start of procedure basic_escape_param_bad(),return from a call to basic_escape_param_bad] codetoanalyze/cpp/errors/stack_escape/basic.cpp, escape_local_struct_member_bad, 3, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [start of procedure escape_local_struct_member_bad(),start of procedure EscapeTest,return from a call to EscapeTest::EscapeTest,return from a call to escape_local_struct_member_bad] @@ -194,29 +138,22 @@ codetoanalyze/cpp/errors/types/typeid_expr.cpp, template_typeid, 2, MEMO codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_double_delete_bad, 3, USE_AFTER_FREE, B1, ERROR, [start of procedure test_double_delete_bad,Skipping Y: method has no implementation] codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_for_map_delete_ok_FP, 2, USE_AFTER_FREE, B5, ERROR, [start of procedure test_for_map_delete_ok_FP,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation] codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_for_umap_delete_ok_FP, 2, USE_AFTER_FREE, B5, ERROR, [start of procedure test_for_umap_delete_ok_FP,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation] -codetoanalyze/cpp/errors/vector/access_field_later.cpp, getIntPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getIntPtr()] -codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithCopy, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithCopy()] -codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithCopyPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithCopyPtr()] -codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithoutCopy, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithoutCopy()] -codetoanalyze/cpp/errors/vector/access_field_later.cpp, getWithoutCopyPtr, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getWithoutCopyPtr()] -codetoanalyze/cpp/errors/vector/empty_access.cpp, access_empty, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure access_empty()] -codetoanalyze/cpp/errors/vector/empty_access.cpp, access_empty_back_bad, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure access_empty_back_bad()] -codetoanalyze/cpp/errors/vector/empty_access.cpp, access_empty_front_bad, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure access_empty_front_bad()] -codetoanalyze/cpp/errors/vector/empty_access.cpp, assign_empty, 4, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure assign_empty()] -codetoanalyze/cpp/errors/vector/empty_access.cpp, clear_empty, 3, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure clear_empty()] -codetoanalyze/cpp/errors/vector/empty_access.cpp, copy_empty, 3, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure copy_empty()] -codetoanalyze/cpp/errors/vector/empty_access.cpp, empty_check_access_empty, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure empty_check_access_empty(),Taking true branch] -codetoanalyze/cpp/errors/vector/empty_access.cpp, getter_empty, 0, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure getter_empty(),start of procedure get_vector(),Skipping ~vector: method has no implementation,return from a call to get_vector] -codetoanalyze/cpp/errors/vector/empty_access.cpp, size_check0_empty, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure size_check0_empty(),Taking true branch] -codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_by_value_empty, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure vector_as_param_by_value_empty(),start of procedure vector_param_by_value_access(),return from a call to vector_param_by_value_access] -codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_clear, 3, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure vector_as_param_clear(),start of procedure vector_param_clear(),return from a call to vector_param_clear] -codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_empty, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure vector_as_param_empty(),start of procedure vector_param_access(),return from a call to vector_param_access] +codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_by_value_clear_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_by_value_clear_ok(),Skipping vector: method has no implementation,Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_by_value_empty_bad, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_by_value_empty_bad(),Skipping vector: method has no implementation,Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_empty_bad, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_empty_bad(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/empty_access.cpp, ERROR_vector_as_param_nonempty_ok, 2, Cannot_star, no_bucket, ERROR, [start of procedure ERROR_vector_as_param_nonempty_ok(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/empty_access.cpp, FN_vector_as_param_clear_bad, 2, Cannot_star, no_bucket, ERROR, [start of procedure FN_vector_as_param_clear_bad(),Skipping vector: method has no implementation] codetoanalyze/cpp/errors/vector/iterator_access.cpp, iterator_access::possible_npe, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_access::possible_npe(),Skipping ~__wrap_iter: method has no implementation,Loop condition is true. Entering loop body,Taking true branch,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref1_bad(),start of procedure iterator_compare::is_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::is_empty,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref2_bad(),start of procedure iterator_compare::not_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::not_empty,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref1_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::is_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::is_empty,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref2_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::not_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::not_empty,Taking true branch] -codetoanalyze/cpp/errors/vector/loop.cpp, non_empty_vector_loop_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure non_empty_vector_loop_bad(),Loop condition is true. Entering loop body] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_deref1_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_deref1_bad(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_deref2_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_deref2_bad(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_no_deref1_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_no_deref1_ok(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_empty_no_deref2_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_empty_no_deref2_ok(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_deref1_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_deref1_bad(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_deref2_bad, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_deref2_bad(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_no_deref1_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_no_deref1_ok(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::ERROR_not_empty_no_deref2_ok, 3, Cannot_star, no_bucket, ERROR, [start of procedure iterator_compare::ERROR_not_empty_no_deref2_ok(),Skipping vector: method has no implementation] +codetoanalyze/cpp/errors/vector/loop.cpp, FP_empty_vector_loop_ok, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure FP_empty_vector_loop_ok(),Skipping vector: method has no implementation,Loop condition is true. Entering loop body] +codetoanalyze/cpp/errors/vector/loop.cpp, non_empty_vector_loop_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure non_empty_vector_loop_bad(),Skipping vector: method has no implementation,Loop condition is true. Entering loop body] codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg2_null_deref, 2, NULL_DEREFERENCE, B5, ERROR, [start of procedure derefFirstArg2_null_deref()] codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg3_null_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure derefFirstArg3_null_deref(),start of procedure derefFirstArg3()] codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg_null_deref, 2, NULL_DEREFERENCE, B5, ERROR, [start of procedure derefFirstArg_null_deref()] diff --git a/infer/tests/codetoanalyze/cpp/errors/models/atomic.cpp b/infer/tests/codetoanalyze/cpp/errors/models/atomic.cpp index a89f1c608..abb4f9b0a 100644 --- a/infer/tests/codetoanalyze/cpp/errors/models/atomic.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/models/atomic.cpp @@ -18,7 +18,7 @@ class A { bool is_zero() const { return x == 0; } }; -void is_zero_impossible_npe_ok() { +void FP_is_zero_impossible_npe_ok() { A a; int* p = nullptr; a.add(); @@ -36,7 +36,7 @@ void is_zero_possible_npe_bad() { *p = 42; } -void not_zero_impossible_npe_ok() { +void FP_not_zero_impossible_npe_ok() { A a; int* p = nullptr; a.add(); @@ -54,7 +54,7 @@ void not_zero_possible_npe_bad() { *p = 42; } -void load_store_impossible_npe_ok() { +void FP_load_store_impossible_npe_ok() { std::atomic a(0); int* p = nullptr; a.store(1); @@ -70,7 +70,7 @@ void load_store_possible_npe_bad() { *p = 42; } -void exchange_impossible_npe_ok() { +void FP_exchange_impossible_npe_ok() { std::atomic a(0); int* p = nullptr; int b = a.exchange(1); @@ -86,7 +86,7 @@ void exchange_possible_npe_bad() { *p = 42; } -void compare_exchange_weak_impossible_npe1_ok() { +void FP_compare_exchange_weak_impossible_npe1_ok() { std::atomic a(0); int b = 0; int* p = nullptr; @@ -104,7 +104,7 @@ void compare_exchange_weak_possible_npe1_bad() { *p = 42; } -void compare_exchange_weak_impossible_npe2_ok() { +void FP_compare_exchange_weak_impossible_npe2_ok() { std::atomic a(0); int b = 1; int* p = nullptr; @@ -122,7 +122,7 @@ void compare_exchange_weak_possible_npe2_bad() { *p = 42; } -void compare_exchange_strong_impossible_npe1_ok() { +void FP_compare_exchange_strong_impossible_npe1_ok() { std::atomic a(0); int b = 0; int* p = nullptr; @@ -140,7 +140,7 @@ void compare_exchange_strong_possible_npe1_bad() { *p = 42; } -void compare_exchange_strong_impossible_npe2_ok() { +void FP_compare_exchange_strong_impossible_npe2_ok() { std::atomic a(0); int b = 1; int* p = nullptr; diff --git a/infer/tests/codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp b/infer/tests/codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp index 3b92b3152..b271e5ddd 100644 --- a/infer/tests/codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp @@ -11,7 +11,7 @@ namespace npe_added_to_b1 { int deref_ref(std::shared_ptr& p) { return *p; } -int causes_npe() { +int FN_shared_ptr_uninit_deref_bad() { std::shared_ptr x; return deref_ref(x); } @@ -24,7 +24,7 @@ class Person { int deref_person(Person& p) { return *(p.f1); } -int causes_npe_person() { +int causes_npe_person_bad() { Person p; return deref_person(p); } diff --git a/infer/tests/codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp b/infer/tests/codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp index 6b765ec08..47ed5137b 100644 --- a/infer/tests/codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/npe/skip_function_with_const_formals.cpp @@ -25,7 +25,7 @@ void test_pointer(const std::shared_ptr& foo) { } } -void skip_then_split_case_bad() { +void ERROR_FP_skip_then_split_case_bad() { auto foo = std::make_shared(); skip_no_const(foo); // Infer havocs foo here since it's not const test_pointer(foo); // this call creates a case split, foo can be null in one @@ -33,7 +33,7 @@ void skip_then_split_case_bad() { foo->f = 12; // error } -void FP_const_skip_then_split_case_ok() { +void ERROR_const_skip_then_split_case_ok() { auto foo = std::make_shared(); skip_const(foo); // Infer shouldn't havoc foo here since it's const... test_pointer(foo); /* ...so foo cannot be null here, even if there is an @@ -42,7 +42,7 @@ void FP_const_skip_then_split_case_ok() { } // same as above but make sure infer pinpoints the correct const argument -void FP_const_skip2_then_split_case_ok() { +void ERROR_const_skip2_then_split_case_ok() { auto foo = std::make_shared(); skip_const2(0, foo, 0, 0); test_pointer(foo); @@ -50,7 +50,7 @@ void FP_const_skip2_then_split_case_ok() { } // same as above but hide the type under a typedef -void FP_typedef_skip_then_split_case_ok() { +void ERROR_typedef_skip_then_split_case_ok() { auto foo = std::make_shared(); skip_typedef(foo); test_pointer(foo); diff --git a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp index 362fc7d74..f0a353738 100644 --- a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp @@ -7,46 +7,46 @@ #include -int test_volatile1() { +int FN_test_volatile1_bad() { std::unique_ptr x; std::unique_ptr y = std::move(x); return *y; } -int test_volatile2() { +int FN_test_volatile2_bad() { std::unique_ptr x; return *x; } -int test_volatile3() { +int FN_test_volatile3_bad() { std::shared_ptr x; std::shared_ptr y = std::move(x); return *y; } -int test_volatile4() { +int FN_test_volatile4_bad() { std::shared_ptr x; return *x; } -int test_const1() { +int FN_test_const1_bad() { std::unique_ptr x; std::unique_ptr y = std::move(x); return *y; } -int test_const2() { +int FN_test_const2_bad() { std::unique_ptr x; return *x; } -int test_const3() { +int FN_test_const3_bad() { std::shared_ptr x; std::shared_ptr y = std::move(x); return *y; } -int test_const4() { +int FN_test_const4_bad() { std::shared_ptr x; return *x; } diff --git a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp index 68cbfe1a8..b06a88acb 100644 --- a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp @@ -10,12 +10,14 @@ namespace deref_after_mode_example { struct Person { + // memory leak FP on Person::Person() because unique_ptr constructor is + // unknown std::unique_ptr age{new int(35)}; std::unique_ptr move_age() { return std::move(age); } int access_age() { return *age; } }; -int deref_after_move_crash() { +int FN_deref_after_move_bad() { Person p; auto x = p.move_age(); *x; diff --git a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp index 83c61be50..4ed65f55c 100644 --- a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp @@ -42,17 +42,27 @@ std::shared_ptr getFromDerived3(Derived* d) { return result; } -void get_from_base1_nullptr_deref() { Base b = *(getFromBase1(nullptr)); } +void FN_get_from_base1_nullptr_deref_bad() { + Base b = *(getFromBase1(nullptr)); +} -void get_from_base2_nullptr_deref() { Base b = *(getFromBase2(nullptr)); } +void FN_get_from_base2_nullptr_deref_bad() { + Base b = *(getFromBase2(nullptr)); +} -void get_from_derived1_nullptr_deref() { Base b = *(getFromDerived1(nullptr)); } +void FN_get_from_derived1_nullptr_deref_bad() { + Base b = *(getFromDerived1(nullptr)); +} -void get_from_derived2_nullptr_deref() { Base b = *(getFromDerived2(nullptr)); } +void FN_get_from_derived2_nullptr_deref_bad() { + Base b = *(getFromDerived2(nullptr)); +} -void get_from_derived3_nullptr_deref() { Base b = *(getFromDerived3(nullptr)); } +void FN_get_from_derived3_nullptr_deref_bad() { + Base b = *(getFromDerived3(nullptr)); +} -void get_from_base1_null_f1_deref() { +void FN_get_from_base1_null_f1_deref_bad() { Base b; int v; b.f1 = &v; @@ -61,7 +71,7 @@ void get_from_base1_null_f1_deref() { int r = *(p->f1); } -void get_from_base2_null_f1_deref() { +void FN_get_from_base2_null_f1_deref_bad() { Base b; int v; b.f1 = &v; @@ -70,7 +80,7 @@ void get_from_base2_null_f1_deref() { int r = *(p->f1); } -void get_from_derived1_null_f1_deref() { +void FN_get_from_derived1_null_f1_deref_bad() { Derived b; int v; b.f1 = &v; @@ -79,7 +89,7 @@ void get_from_derived1_null_f1_deref() { int r = *(p->f1); } -void get_from_derived2_null_f1_deref() { +void FN_get_from_derived2_null_f1_deref_bad() { Derived b; int v; b.f1 = &v; @@ -88,7 +98,7 @@ void get_from_derived2_null_f1_deref() { int r = *(p->f1); } -void get_from_derived3_null_f1_deref() { +void FN_get_from_derived3_null_f1_deref_bad() { Derived b; int v; b.f1 = &v; diff --git a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp index 0b45f931f..fc3cd3619 100644 --- a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/shared_ptr_deref.cpp @@ -24,77 +24,79 @@ int empty_ptr_access() { return 0; } -int empty_ptr_deref() { +int FN_empty_ptr_deref_bad() { std::shared_ptr x; return *x; } -int nullptr_ptr_deref() { +int FN_nullptr_ptr_deref_bad() { std::shared_ptr x(nullptr); return *x; } -int empty_ptr_field_deref() { +int FN_empty_ptr_field_deref_bad() { std::shared_ptr x; return x.get()->field; } -int empty_ptr_field_deref2() { +int FN_empty_ptr_field_deref2_bad() { std::shared_ptr x; return x->field; } -int empty_ptr_method_deref() { +int FN_empty_ptr_method_deref_bad() { std::shared_ptr x; return x->get(); } -int reset_ptr_null_deref() { +int FN_reset_ptr_null_deref_bad() { std::shared_ptr x(new int); x.reset(); return *x; } -int reset_ptr_null_deref2() { +int FN_reset_ptr_null_deref2_bad() { std::shared_ptr x(new int); x.reset(new int); x.reset(); return *x; } -int reset_ptr_ok_deref() { +int FP_reset_ptr_deref_ok() { std::shared_ptr x; x.reset(new int); return *x; } -int reset_ptr_ok_deref2() { +int FP_reset_ptr_deref2_ok() { std::shared_ptr x; x.reset(); x.reset(new int); return *x; } -int shared_ptr_copy_null_deref() { +int FN_shared_ptr_copy_null_deref_bad() { std::shared_ptr p1; std::shared_ptr p2 = p1; return *p2; } -int shared_ptr_assign_null_deref() { +int FN_shared_ptr_assign_null_deref_bad() { std::shared_ptr p1(new int); std::shared_ptr p2; p1 = p2; return *p1; } -int shared_ptr_copy_ok_deref() { +// FP is a memory leak +int FP_shared_ptr_copy_deref_ok() { std::shared_ptr p1(new int); std::shared_ptr p2 = p1; return *p2; } -int shared_ptr_assign_ok_deref() { +// FP is a memory leak +int FP_shared_ptr_assign_deref_ok() { std::shared_ptr p1(new int); std::shared_ptr p2; p2 = p1; @@ -102,27 +104,29 @@ int shared_ptr_assign_ok_deref() { return *p2; } -int shared_ptr_move_null_deref() { +int FN_shared_ptr_move_null_deref_bad() { std::shared_ptr p1(new int); std::shared_ptr p2 = std::move(p1); return *p1; } -int shared_ptr_check_null() { +// Cannot_star +int ERROR_shared_ptr_check_null_ok() { std::shared_ptr p; if (p == nullptr) return 1; return *p; } -int shared_ptr_check_notnull() { +// Cannot_star +int ERROR_shared_ptr_check_notnull_ok() { std::shared_ptr p; if (p != nullptr) return *p; return 1; } -int shared_ptr_check_null2(std::shared_ptr p) { +int shared_ptr_check_null2_ok(std::shared_ptr p) { if (p == nullptr) return 1; return *p; diff --git a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp index 8e4fb09a4..98d8de3b2 100644 --- a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp @@ -24,87 +24,88 @@ int empty_ptr_access() { return 0; } -int empty_ptr_deref() { +int FN_empty_ptr_deref_bad() { std::unique_ptr x; return *x; } -int empty_array_ptr_deref() { +int FN_empty_array_ptr_deref_bad() { std::unique_ptr x; return x[0]; } -int nullptr_ptr_deref() { +int FN_nullptr_ptr_deref_bad() { std::unique_ptr x(nullptr); return *x; } -int nullptr_array_ptr_deref() { +int FN_nullptr_array_ptr_deref_bad() { std::unique_ptr x(nullptr); return x[2]; } -int empty_ptr_field_deref() { +int FN_empty_ptr_field_deref_bad() { std::unique_ptr x; return x.get()->field; } -int empty_ptr_field_deref2() { +int FN_empty_ptr_field_deref2_bad() { std::unique_ptr x; return x->field; } -int empty_ptr_method_deref() { +int FN_empty_ptr_method_deref_bad() { std::unique_ptr x; return x->get(); } -int reset_ptr_null_deref() { +// FP is memory leak +int FN_FP_reset_ptr_null_deref_bad() { std::unique_ptr x(new int); x.reset(); return *x; } -int reset_ptr_null_deref2() { +int FN_FP_reset_ptr_null_deref2_bad() { std::unique_ptr x(new int); x.reset(new int); x.reset(); return *x; } -int reset_ptr_ok_deref() { +int FP_reset_ptr_deref_ok() { std::unique_ptr x; x.reset(new int); return *x; } -int reset_ptr_ok_deref2() { +int FP_reset_ptr_deref2_ok() { std::unique_ptr x; x.reset(); x.reset(new int); return *x; } -int unique_ptr_copy_null_deref() { +int FN_unique_ptr_copy_null_deref_bad() { std::unique_ptr p1; std::unique_ptr p2 = std::move(p1); return *p2; } -int unique_ptr_assign_null_deref() { +int FN_unique_ptr_assign_null_deref_bad() { std::unique_ptr p1(new int); std::unique_ptr p2; p1 = std::move(p2); return *p1; } -int unique_ptr_move_ok_deref() { +int FP_unique_ptr_move_deref_ok() { std::unique_ptr p1(new int); std::unique_ptr p2 = std::move(p1); return *p2; } -int unique_ptr_assign_ok_deref() { +int unique_ptr_assign_deref_ok() { std::unique_ptr p1(new int); std::unique_ptr p2; p2 = std::move(p1); @@ -112,7 +113,7 @@ int unique_ptr_assign_ok_deref() { return *p2; } -int unique_ptr_move_null_deref() { +int FN_unique_ptr_move_null_deref_bad() { std::unique_ptr p1(new int); std::unique_ptr p2 = std::move(p1); return *p1; diff --git a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp index c9bac8eb1..560a2c1b4 100644 --- a/infer/tests/codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp @@ -90,28 +90,28 @@ std::shared_ptr safeGet(std::weak_ptr p) { return s; } -int safeGetFromWeakBaseConstr_bad(int v) { +int FN_safeGetFromWeakBaseConstr_bad(int v) { auto b = std::make_shared(&v); auto s = safeGet(fromWeakBaseConstr(std::weak_ptr(b))); b->f1 = nullptr; return *s->f1; } -int safeGetFromWeakBaseAssign_bad(int v) { +int FN_safeGetFromWeakBaseAssign_bad(int v) { auto b = std::make_shared(&v); auto s = safeGet(fromWeakBaseAssign(std::weak_ptr(b))); b->f1 = nullptr; return *s->f1; } -int safeGetFromWeakDerivedConstr_bad(int v) { +int FN_safeGetFromWeakDerivedConstr_bad(int v) { auto d = std::make_shared(&v); auto s = safeGet(fromWeakDerivedConstr(std::weak_ptr(d))); d->f1 = nullptr; return *s->f1; } -int safeGetFromWeakDerivedAssign_bad(int v) { +int FN_safeGetFromWeakDerivedAssign_bad(int v) { auto d = std::make_shared(&v); auto s = safeGet(fromWeakDerivedAssign(std::weak_ptr(d))); d->f1 = nullptr; @@ -227,7 +227,7 @@ void lock_can_be_null_bad(std::weak_ptr& p) { int _ = *s.get(); } -int safe_deref_good(std::weak_ptr& p) { +int safe_deref_ok(std::weak_ptr& p) { if (auto s = p.lock()) { return *s.get(); } diff --git a/infer/tests/codetoanalyze/cpp/errors/vector/access_field_later.cpp b/infer/tests/codetoanalyze/cpp/errors/vector/access_field_later.cpp index f209ff24c..6e91ba772 100644 --- a/infer/tests/codetoanalyze/cpp/errors/vector/access_field_later.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/vector/access_field_later.cpp @@ -23,31 +23,31 @@ struct WithoutCopy { int f2; }; -int getIntPtr(int id, std::vector& v) { +int getIntPtrOk(int id, std::vector& v) { int x = v.size(); int** res = &v[id]; return **res; } -int getWithCopy(int id, std::vector& v) { +int getWithCopyOk(int id, std::vector& v) { int x = v.size(); WithCopy* res = &v[id]; return res->f1; } -int getWithCopyPtr(int id, std::vector& v) { +int getWithCopyPtrOk(int id, std::vector& v) { int x = v.size(); WithCopy** res = &v[id]; return (*res)->f1; } -int getWithoutCopy(int id, std::vector& v) { +int getWithoutCopyOk(int id, std::vector& v) { int x = v.size(); WithoutCopy* res = &v[id]; return res->f1; } -int getWithoutCopyPtr(int id, std::vector& v) { +int getWithoutCopyPtrOk(int id, std::vector& v) { int x = v.size(); WithoutCopy** res = &v[id]; return (*res)->f1; diff --git a/infer/tests/codetoanalyze/cpp/errors/vector/empty_access.cpp b/infer/tests/codetoanalyze/cpp/errors/vector/empty_access.cpp index 922eaf46a..cd331feda 100644 --- a/infer/tests/codetoanalyze/cpp/errors/vector/empty_access.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/vector/empty_access.cpp @@ -7,111 +7,111 @@ #include -int access_empty() { +int FN_access_empty_bad() { const std::vector vec; return vec[0]; } -int access_empty_front_bad() { +int FN_access_empty_front_bad() { const std::vector vec; return vec.front(); } -int access_empty_back_bad() { +int FN_access_empty_back_bad() { const std::vector vec; return vec.back(); } -int access_nonempty() { +int access_nonempty_ok() { const std::vector vec(1); return vec[0]; } -int clear_empty() { +int FN_clear_empty_bad() { std::vector vec(1); vec.clear(); return vec[0]; } -int resize0_empty() { +int FN_resize0_empty_bad() { std::vector vec(1); vec.resize(0); return vec[0]; } -int resize1_nonempty() { +int resize1_nonempty_ok() { std::vector vec; vec.resize(1); return vec[0]; } -int resize_n_nonempty(int n) { +int resize_n_nonempty_ok(int n) { std::vector vec; vec.resize(n); return vec[0]; } -int push_back_nonempty() { +int push_back_nonempty_ok() { std::vector vec; vec.push_back(1); return vec[0]; } -int copy_empty() { +int FN_copy_empty_bad() { std::vector vec1; std::vector vec2 = vec1; return vec2[0]; } -int copy_nonempty() { +int copy_nonempty_ok() { std::vector vec1(10); std::vector vec2 = vec1; return vec2[0]; } -int assign_empty() { +int FN_assign_empty_bad() { std::vector vec1; std::vector vec2(1); vec2 = vec1; return vec2[0]; } -int assign_nonempty() { +int assign_nonempty_ok() { std::vector vec1(1); std::vector vec2; vec2 = vec1; return vec2[0]; } -int empty_check_nonempty(std::vector& vec) { +int empty_check_nonempty_ok(std::vector& vec) { if (vec.empty()) { return 1; } return vec[0]; } -int empty_check_nonempty2(std::vector& vec) { +int empty_check_nonempty2_ok(std::vector& vec) { if (vec.empty()) { vec.push_back(1); } return vec[0]; } -int empty_check_access_empty(std::vector& vec) { +int FN_empty_check_access_empty_bad(std::vector& vec) { if (vec.empty()) { return vec[0]; } return 1; } -int size_check0_empty(std::vector& vec) { +int FN_size_check0_empty_bad(std::vector& vec) { if (vec.size() == 0) { return vec[0]; } return 1; } -int size_check1_nonempty() { +int size_check1_nonempty_ok() { std::vector vec; if (vec.size() > 0) { return vec[0]; @@ -123,12 +123,14 @@ int vector_param_access(std::vector& v) { return v.back(); // shouldn't report anything here } -int vector_as_param_empty() { +// Cannot_star +int ERROR_vector_as_param_empty_bad() { std::vector v; return vector_param_access(v); } -int vector_as_param_nonempty() { +// Cannot_star +int ERROR_vector_as_param_nonempty_ok() { std::vector v(1); return vector_param_access(v); } @@ -137,14 +139,15 @@ int vector_param_by_value_access(std::vector v) { return v.back(); // shouldn't report anything here } -int vector_as_param_by_value_empty() { +// Cannot_star +int ERROR_vector_as_param_by_value_empty_bad() { std::vector v; return vector_param_by_value_access(v); } void vector_param_by_value_clear(std::vector v) { v.clear(); } -int vector_as_param_by_value_clear_no_crash() { +int ERROR_vector_as_param_by_value_clear_ok() { std::vector v(1); vector_param_by_value_clear(v); return v[0]; @@ -152,7 +155,8 @@ int vector_as_param_by_value_clear_no_crash() { void vector_param_clear(std::vector& v) { v.clear(); } -int vector_as_param_clear() { +// Cannot_star +int FN_vector_as_param_clear_bad() { std::vector v(1); vector_param_clear(v); return v[0]; @@ -163,4 +167,4 @@ std::vector get_vector() { return x; } -int getter_empty() { return get_vector()[0]; } +int FN_getter_empty_bad() { return get_vector()[0]; } diff --git a/infer/tests/codetoanalyze/cpp/errors/vector/iterator_cmp.cpp b/infer/tests/codetoanalyze/cpp/errors/vector/iterator_cmp.cpp index a7ccdba3c..dcff94a80 100644 --- a/infer/tests/codetoanalyze/cpp/errors/vector/iterator_cmp.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/vector/iterator_cmp.cpp @@ -12,56 +12,56 @@ bool is_empty(const std::vector& vec) { return vec.begin() == vec.end(); } bool not_empty(const std::vector& vec) { return vec.begin() != vec.end(); } -void empty_no_deref1_ok() { +void ERROR_empty_no_deref1_ok() { int* p = nullptr; std::vector vec; if (!is_empty(vec)) *p = 42; } -void empty_no_deref2_ok() { +void ERROR_empty_no_deref2_ok() { int* p = nullptr; std::vector vec; if (not_empty(vec)) *p = 42; } -void empty_deref1_bad() { +void ERROR_empty_deref1_bad() { int* p = nullptr; std::vector vec; if (is_empty(vec)) *p = 42; } -void empty_deref2_bad() { +void ERROR_empty_deref2_bad() { int* p = nullptr; std::vector vec; if (!not_empty(vec)) *p = 42; } -void not_empty_no_deref1_ok() { +void ERROR_not_empty_no_deref1_ok() { int* p = nullptr; std::vector vec = {1, 2, 3, 4}; if (is_empty(vec)) *p = 42; } -void not_empty_no_deref2_ok() { +void ERROR_not_empty_no_deref2_ok() { int* p = nullptr; std::vector vec = {1, 2, 3, 4}; if (!not_empty(vec)) *p = 42; } -void not_empty_deref1_bad() { +void ERROR_not_empty_deref1_bad() { int* p = nullptr; std::vector vec = {1, 2, 3, 4}; if (!is_empty(vec)) *p = 42; } -void not_empty_deref2_bad() { +void ERROR_not_empty_deref2_bad() { int* p = nullptr; std::vector vec = {1, 2, 3, 4}; if (not_empty(vec)) diff --git a/infer/tests/codetoanalyze/cpp/errors/vector/loop.cpp b/infer/tests/codetoanalyze/cpp/errors/vector/loop.cpp index 826e32a67..fbbbeba22 100644 --- a/infer/tests/codetoanalyze/cpp/errors/vector/loop.cpp +++ b/infer/tests/codetoanalyze/cpp/errors/vector/loop.cpp @@ -31,7 +31,7 @@ void iterator_for_access_ok(std::vector& vec) { } } -void empty_vector_loop_ok() { +void FP_empty_vector_loop_ok() { std::vector vec; int* ptr = nullptr; for (const auto& elem : vec) { diff --git a/infer/tests/codetoanalyze/cpp/errors/vector/use_models_headers.cpp b/infer/tests/codetoanalyze/cpp/errors/vector/use_models_headers.cpp deleted file mode 100644 index 2491b2341..000000000 --- a/infer/tests/codetoanalyze/cpp/errors/vector/use_models_headers.cpp +++ /dev/null @@ -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 -#if defined(_LIBCPP_VECTOR) || defined(_GLIBCXX_VECTOR) -#error "infer should use models headers" -#endif diff --git a/infer/tests/codetoanalyze/cpp/liveness/Makefile b/infer/tests/codetoanalyze/cpp/liveness/Makefile index 91d8a2a47..57d5b3511 100644 --- a/infer/tests/codetoanalyze/cpp/liveness/Makefile +++ b/infer/tests/codetoanalyze/cpp/liveness/Makefile @@ -6,7 +6,7 @@ TESTS_DIR = ../../.. # see explanations in cpp/errors/Makefile for the custom isystem -CLANG_OPTIONS = -x c++ -std=c++14 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c +CLANG_OPTIONS = -x c++ -std=c++14 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c INFER_OPTIONS = --liveness-only --ml-buckets cpp --debug-exceptions --project-root $(TESTS_DIR) INFERPRINT_OPTIONS = --issues-tests diff --git a/infer/tests/codetoanalyze/cpp/liveness/dead_stores.cpp b/infer/tests/codetoanalyze/cpp/liveness/dead_stores.cpp index 0ab7c4eb9..b0a34bc99 100644 --- a/infer/tests/codetoanalyze/cpp/liveness/dead_stores.cpp +++ b/infer/tests/codetoanalyze/cpp/liveness/dead_stores.cpp @@ -508,9 +508,8 @@ struct A { int f : 4; }; -int decltype_read_ok_FP(int x) { - A a; // reports here as frontend forgets the expression used in decltype below - // a solution would be to annotate with __unused__ (T26148700) +int decltype_read_ok(int x) { + A a; decltype(a.f) i; return x + i; } diff --git a/infer/tests/codetoanalyze/cpp/liveness/issues.exp b/infer/tests/codetoanalyze/cpp/liveness/issues.exp index cedf52c68..76a18a95a 100644 --- a/infer/tests/codetoanalyze/cpp/liveness/issues.exp +++ b/infer/tests/codetoanalyze/cpp/liveness/issues.exp @@ -8,7 +8,6 @@ codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_store_before_captu codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_struct_no_destructor_bad, 0, DEAD_STORE, no_bucket, ERROR, [Write of unused value] codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_struct_rvalue_ref_bad, 0, DEAD_STORE, no_bucket, ERROR, [Write of unused value] codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::dead_then_live_bad, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value] -codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::decltype_read_ok_FP, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value] codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::easy_bad, 0, DEAD_STORE, no_bucket, ERROR, [Write of unused value] codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::init_capture_no_call_bad, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value] codetoanalyze/cpp/liveness/dead_stores.cpp, dead_stores::init_capture_reassign_bad, 1, DEAD_STORE, no_bucket, ERROR, [Write of unused value] diff --git a/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp b/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp index 5d766baa0..97318a156 100644 --- a/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp +++ b/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp @@ -5,14 +5,16 @@ * LICENSE file in the root directory of this source tree. */ -// header required by TranslateAsPtr class. It's not in common header search -// path when running clang without infer (clang wrappers add it) -// Add -isystem '/path/to/infer/repo' to clang invocation to work around -// compilation problem -#include - /* 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 TranslateAsType {}; +} // namespace infer_traits + // basic test of C function with __infer_replace_with_deref_first_arg attribute int derefFirstArg(int* a, int* b) INFER_MODEL_AS_DEREF_FIRST_ARG; diff --git a/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp.dot index e8e1dd543..2585007c6 100644 --- a/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/attributes/annotate.cpp.dot @@ -14,7 +14,7 @@ digraph cfg { "derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_2" [label="2: Exit derefFirstArg2 \n " color=yellow style=filled] -"derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_3" [label="3: Return Stmt \n n$0=*&b:int* [line 24, column 11]\n n$1=*n$0:int [line 24, column 10]\n *&return:int=n$1 [line 24, column 3]\n NULLIFY(&b); [line 24, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 24, column 3]\n APPLY_ABSTRACTION; [line 24, column 3]\n " shape="box"] +"derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_3" [label="3: Return Stmt \n n$0=*&b:int* [line 26, column 11]\n n$1=*n$0:int [line 26, column 10]\n *&return:int=n$1 [line 26, column 3]\n NULLIFY(&b); [line 26, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 26, column 3]\n APPLY_ABSTRACTION; [line 26, column 3]\n " shape="box"] "derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_3" -> "derefFirstArg2#11387624487828646016.9777f67ce8b8da5c99a0e59eaaf6eb17_2" ; @@ -25,11 +25,11 @@ digraph cfg { "derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_2" [label="2: Exit derefFirstArg2_null_deref \n " color=yellow style=filled] -"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" [label="3: Return Stmt \n n$0=*null:int [line 47, column 10]\n *&return:int=n$0 [line 47, column 3]\n EXIT_SCOPE(n$0); [line 47, column 3]\n APPLY_ABSTRACTION; [line 47, column 3]\n " shape="box"] +"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" [label="3: Return Stmt \n n$0=*null:int [line 49, column 10]\n *&return:int=n$0 [line 49, column 3]\n EXIT_SCOPE(n$0); [line 49, column 3]\n APPLY_ABSTRACTION; [line 49, column 3]\n " shape="box"] "derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" -> "derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_2" ; -"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 46, column 3]\n *&a:int=0 [line 46, column 3]\n NULLIFY(&a); [line 46, column 3]\n EXIT_SCOPE(a); [line 46, column 3]\n " shape="box"] +"derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 48, column 3]\n *&a:int=0 [line 48, column 3]\n NULLIFY(&a); [line 48, column 3]\n EXIT_SCOPE(a); [line 48, column 3]\n " shape="box"] "derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_4" -> "derefFirstArg2_null_deref#13631548499595216278.23fca23ff6728e4b72a2548ecb3b1ba0_3" ; @@ -40,11 +40,11 @@ digraph cfg { "derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_2" [label="2: Exit derefFirstArg2_ok_deref \n " color=yellow style=filled] -"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" [label="3: Return Stmt \n n$0=*&a:int [line 52, column 10]\n *&return:int=n$0 [line 52, column 3]\n NULLIFY(&a); [line 52, column 3]\n EXIT_SCOPE(n$0,a); [line 52, column 3]\n APPLY_ABSTRACTION; [line 52, column 3]\n " shape="box"] +"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" [label="3: Return Stmt \n n$0=*&a:int [line 54, column 10]\n *&return:int=n$0 [line 54, column 3]\n NULLIFY(&a); [line 54, column 3]\n EXIT_SCOPE(n$0,a); [line 54, column 3]\n APPLY_ABSTRACTION; [line 54, column 3]\n " shape="box"] "derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" -> "derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_2" ; -"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 51, column 3]\n *&a:int=0 [line 51, column 3]\n " shape="box"] +"derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 53, column 3]\n *&a:int=0 [line 53, column 3]\n " shape="box"] "derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_4" -> "derefFirstArg2_ok_deref#6873109919028202465.d57ab0b62c0ba18894b8b08d5a8f8e8a_3" ; @@ -55,7 +55,7 @@ digraph cfg { "derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_2" [label="2: Exit derefFirstArg3 \n " color=yellow style=filled] -"derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_3" [label="3: Return Stmt \n n$0=*&b:int* [line 31, column 11]\n n$1=*n$0:int [line 31, column 10]\n *&return:int=n$1 [line 31, column 3]\n NULLIFY(&b); [line 31, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 31, column 3]\n APPLY_ABSTRACTION; [line 31, column 3]\n " shape="box"] +"derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_3" [label="3: Return Stmt \n n$0=*&b:int* [line 33, column 11]\n n$1=*n$0:int [line 33, column 10]\n *&return:int=n$1 [line 33, column 3]\n NULLIFY(&b); [line 33, column 3]\n EXIT_SCOPE(n$0,n$1,b); [line 33, column 3]\n APPLY_ABSTRACTION; [line 33, column 3]\n " shape="box"] "derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_3" -> "derefFirstArg3#3150650678378709003.fb38cf6b9238ba2f8f6e25136f8beb95_2" ; @@ -63,14 +63,14 @@ digraph cfg { "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_1" -> "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" ; -"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_2" [label="2: Exit derefFirstArg3_null_deref \n NULLIFY(&a); [line 63, column 1]\n " color=yellow style=filled] +"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_2" [label="2: Exit derefFirstArg3_null_deref \n NULLIFY(&a); [line 65, column 1]\n " color=yellow style=filled] -"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(&a:int*,null:int*) [line 62, column 10]\n *&return:int=n$0 [line 62, column 3]\n EXIT_SCOPE(n$0,a); [line 62, column 3]\n APPLY_ABSTRACTION; [line 62, column 3]\n " shape="box"] +"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(&a:int*,null:int*) [line 64, column 10]\n *&return:int=n$0 [line 64, column 3]\n EXIT_SCOPE(n$0,a); [line 64, column 3]\n APPLY_ABSTRACTION; [line 64, column 3]\n " shape="box"] "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" -> "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_2" ; -"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 61, column 3]\n *&a:int=0 [line 61, column 3]\n " shape="box"] +"derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 63, column 3]\n *&a:int=0 [line 63, column 3]\n " shape="box"] "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_4" -> "derefFirstArg3_null_deref#3036141491555788229.605788dbf5e3c5625520098d1b5d320e_3" ; @@ -78,14 +78,14 @@ digraph cfg { "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_1" -> "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" ; -"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_2" [label="2: Exit derefFirstArg3_ok_deref \n NULLIFY(&a); [line 58, column 1]\n " color=yellow style=filled] +"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_2" [label="2: Exit derefFirstArg3_ok_deref \n NULLIFY(&a); [line 60, column 1]\n " color=yellow style=filled] -"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(null:int*,&a:int*) [line 57, column 10]\n *&return:int=n$0 [line 57, column 3]\n EXIT_SCOPE(n$0,a); [line 57, column 3]\n APPLY_ABSTRACTION; [line 57, column 3]\n " shape="box"] +"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(null:int*,&a:int*) [line 59, column 10]\n *&return:int=n$0 [line 59, column 3]\n EXIT_SCOPE(n$0,a); [line 59, column 3]\n APPLY_ABSTRACTION; [line 59, column 3]\n " shape="box"] "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" -> "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_2" ; -"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 56, column 3]\n *&a:int=0 [line 56, column 3]\n " shape="box"] +"derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 58, column 3]\n *&a:int=0 [line 58, column 3]\n " shape="box"] "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_4" -> "derefFirstArg3_ok_deref#12266654054137171150.c58c85ea4ba2ebfd89d0336e51301e7a_3" ; @@ -96,11 +96,11 @@ digraph cfg { "derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_2" [label="2: Exit derefFirstArg_null_deref \n " color=yellow style=filled] -"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" [label="3: Return Stmt \n n$0=*null:int [line 37, column 10]\n *&return:int=n$0 [line 37, column 3]\n EXIT_SCOPE(n$0); [line 37, column 3]\n APPLY_ABSTRACTION; [line 37, column 3]\n " shape="box"] +"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" [label="3: Return Stmt \n n$0=*null:int [line 39, column 10]\n *&return:int=n$0 [line 39, column 3]\n EXIT_SCOPE(n$0); [line 39, column 3]\n APPLY_ABSTRACTION; [line 39, column 3]\n " shape="box"] "derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" -> "derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_2" ; -"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 36, column 3]\n *&a:int=0 [line 36, column 3]\n NULLIFY(&a); [line 36, column 3]\n EXIT_SCOPE(a); [line 36, column 3]\n " shape="box"] +"derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 38, column 3]\n *&a:int=0 [line 38, column 3]\n NULLIFY(&a); [line 38, column 3]\n EXIT_SCOPE(a); [line 38, column 3]\n " shape="box"] "derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_4" -> "derefFirstArg_null_deref#14830687999166111591.325df3347d8f75d0292cfd33a485d28a_3" ; @@ -111,11 +111,11 @@ digraph cfg { "derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_2" [label="2: Exit derefFirstArg_ok_deref \n " color=yellow style=filled] -"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" [label="3: Return Stmt \n n$0=*&a:int [line 42, column 10]\n *&return:int=n$0 [line 42, column 3]\n NULLIFY(&a); [line 42, column 3]\n EXIT_SCOPE(n$0,a); [line 42, column 3]\n APPLY_ABSTRACTION; [line 42, column 3]\n " shape="box"] +"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" [label="3: Return Stmt \n n$0=*&a:int [line 44, column 10]\n *&return:int=n$0 [line 44, column 3]\n NULLIFY(&a); [line 44, column 3]\n EXIT_SCOPE(n$0,a); [line 44, column 3]\n APPLY_ABSTRACTION; [line 44, column 3]\n " shape="box"] "derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" -> "derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_2" ; -"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 41, column 3]\n *&a:int=0 [line 41, column 3]\n " shape="box"] +"derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_4" [label="4: DeclStmt \n VARIABLE_DECLARED(a:int); [line 43, column 3]\n *&a:int=0 [line 43, column 3]\n " shape="box"] "derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_4" -> "derefFirstArg_ok_deref#70986049112502156.78efafe2cdade07d4257a7cd671e75f5_3" ; @@ -123,18 +123,18 @@ digraph cfg { "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_1" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_5" ; -"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_2" [label="2: Exit getPtr_null_deref1 \n NULLIFY(&t); [line 91, column 1]\n " color=yellow style=filled] +"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_2" [label="2: Exit getPtr_null_deref1 \n NULLIFY(&t); [line 93, column 1]\n " color=yellow style=filled] -"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" [label="3: Return Stmt \n _=*&t:int* [line 90, column 11]\n n$1=*&t:int* [line 90, column 11]\n n$2=*n$1:int [line 90, column 10]\n *&return:int=n$2 [line 90, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 90, column 3]\n APPLY_ABSTRACTION; [line 90, column 3]\n " shape="box"] +"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" [label="3: Return Stmt \n _=*&t:int* [line 92, column 11]\n n$1=*&t:int* [line 92, column 11]\n n$2=*n$1:int [line 92, column 10]\n *&return:int=n$2 [line 92, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 92, column 3]\n APPLY_ABSTRACTION; [line 92, column 3]\n " shape="box"] "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_2" ; -"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 89, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 91, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,null:int*) [line 91, column 3]\n EXIT_SCOPE(_,n$4); [line 91, column 3]\n " shape="box"] "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_4" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_3" ; -"getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 88, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 90, column 23]\n EXIT_SCOPE(n$5); [line 90, column 23]\n " shape="box"] "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_5" -> "getPtr_null_deref1#10685326586135592861.d05a7735c36f759fec001951cdc51035_4" ; @@ -142,18 +142,18 @@ digraph cfg { "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_1" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_5" ; -"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_2" [label="2: Exit getPtr_null_deref2 \n NULLIFY(&t); [line 97, column 1]\n " color=yellow style=filled] +"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_2" [label="2: Exit getPtr_null_deref2 \n NULLIFY(&t); [line 99, column 1]\n " color=yellow style=filled] -"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" [label="3: Return Stmt \n _=*&t:int* [line 96, column 11]\n n$1=*&t:int* [line 96, column 11]\n n$2=*n$1:int [line 96, column 10]\n *&return:int=n$2 [line 96, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 96, column 3]\n APPLY_ABSTRACTION; [line 96, column 3]\n " shape="box"] +"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" [label="3: Return Stmt \n _=*&t:int* [line 98, column 11]\n n$1=*&t:int* [line 98, column 11]\n n$2=*n$1:int [line 98, column 10]\n *&return:int=n$2 [line 98, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 98, column 3]\n APPLY_ABSTRACTION; [line 98, column 3]\n " shape="box"] "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_2" ; -"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 95, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 97, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,null:int*) [line 97, column 3]\n EXIT_SCOPE(_,n$4); [line 97, column 3]\n " shape="box"] "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_4" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_3" ; -"getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 94, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 96, column 23]\n EXIT_SCOPE(n$5); [line 96, column 23]\n " shape="box"] "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_5" -> "getPtr_null_deref2#10682492045158632578.de31216813faa493761802feb6f997f2_4" ; @@ -161,22 +161,22 @@ digraph cfg { "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_1" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" ; -"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_2" [label="2: Exit getPtr_ok_deref \n NULLIFY(&t); [line 104, column 1]\n NULLIFY(&a); [line 104, column 1]\n " color=yellow style=filled] +"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_2" [label="2: Exit getPtr_ok_deref \n NULLIFY(&a); [line 106, column 1]\n NULLIFY(&t); [line 106, column 1]\n " color=yellow style=filled] -"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" [label="3: Return Stmt \n _=*&t:int* [line 103, column 11]\n n$1=*&t:int* [line 103, column 11]\n n$2=*n$1:int [line 103, column 10]\n *&return:int=n$2 [line 103, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 103, column 3]\n APPLY_ABSTRACTION; [line 103, column 3]\n " shape="box"] +"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" [label="3: Return Stmt \n _=*&t:int* [line 105, column 11]\n n$1=*&t:int* [line 105, column 11]\n n$2=*n$1:int [line 105, column 10]\n *&return:int=n$2 [line 105, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 105, column 3]\n APPLY_ABSTRACTION; [line 105, column 3]\n " shape="box"] "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_2" ; -"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 102, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 104, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,&a:int*) [line 104, column 3]\n EXIT_SCOPE(_,n$4,a); [line 104, column 3]\n " shape="box"] "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_4" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_3" ; -"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 101, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 103, column 23]\n EXIT_SCOPE(n$5); [line 103, column 23]\n " shape="box"] "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_5" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_4" ; -"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 100, column 3]\n *&a:int=0 [line 100, column 3]\n " shape="box"] +"getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 102, column 3]\n *&a:int=0 [line 102, column 3]\n " shape="box"] "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_6" -> "getPtr_ok_deref#15608473391071478730.49e56fac5bd82269c2093a9c1e438200_5" ; @@ -184,18 +184,18 @@ digraph cfg { "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_1" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_5" ; -"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_2" [label="2: Exit getRef_null_deref1 \n NULLIFY(&t); [line 129, column 1]\n " color=yellow style=filled] +"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_2" [label="2: Exit getRef_null_deref1 \n NULLIFY(&t); [line 131, column 1]\n " color=yellow style=filled] -"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" [label="3: Return Stmt \n _=*&t:int* [line 128, column 10]\n n$1=*&t:int* [line 128, column 10]\n n$2=*n$1:int [line 128, column 10]\n *&return:int=n$2 [line 128, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 128, column 3]\n APPLY_ABSTRACTION; [line 128, column 3]\n " shape="box"] +"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" [label="3: Return Stmt \n _=*&t:int* [line 130, column 10]\n n$1=*&t:int* [line 130, column 10]\n n$2=*n$1:int [line 130, column 10]\n *&return:int=n$2 [line 130, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 130, column 3]\n APPLY_ABSTRACTION; [line 130, column 3]\n " shape="box"] "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_2" ; -"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 127, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 129, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,null:int*) [line 129, column 3]\n EXIT_SCOPE(_,n$4); [line 129, column 3]\n " shape="box"] "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_4" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_3" ; -"getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 126, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 128, column 23]\n EXIT_SCOPE(n$5); [line 128, column 23]\n " shape="box"] "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_5" -> "getRef_null_deref1#4264296374417396044.654d24b6c4af017d90a5ceff83c121c2_4" ; @@ -203,18 +203,18 @@ digraph cfg { "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_1" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_5" ; -"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_2" [label="2: Exit getRef_null_deref2 \n NULLIFY(&t); [line 135, column 1]\n " color=yellow style=filled] +"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_2" [label="2: Exit getRef_null_deref2 \n NULLIFY(&t); [line 137, column 1]\n " color=yellow style=filled] -"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" [label="3: Return Stmt \n _=*&t:int* [line 134, column 10]\n n$1=*&t:int* [line 134, column 10]\n n$2=*n$1:int [line 134, column 10]\n *&return:int=n$2 [line 134, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 134, column 3]\n APPLY_ABSTRACTION; [line 134, column 3]\n " shape="box"] +"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" [label="3: Return Stmt \n _=*&t:int* [line 136, column 10]\n n$1=*&t:int* [line 136, column 10]\n n$2=*n$1:int [line 136, column 10]\n *&return:int=n$2 [line 136, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 136, column 3]\n APPLY_ABSTRACTION; [line 136, column 3]\n " shape="box"] "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_2" ; -"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 133, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 135, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,null:int*) [line 135, column 3]\n EXIT_SCOPE(_,n$4); [line 135, column 3]\n " shape="box"] "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_4" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_3" ; -"getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 132, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 134, column 23]\n EXIT_SCOPE(n$5); [line 134, column 23]\n " shape="box"] "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_5" -> "getRef_null_deref2#4263471740696427019.45bed1239309132cabf29f4cdd81f3cc_4" ; @@ -222,22 +222,22 @@ digraph cfg { "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_1" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" ; -"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_2" [label="2: Exit getRef_ok_deref \n NULLIFY(&a); [line 142, column 1]\n NULLIFY(&t); [line 142, column 1]\n " color=yellow style=filled] +"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_2" [label="2: Exit getRef_ok_deref \n NULLIFY(&t); [line 144, column 1]\n NULLIFY(&a); [line 144, column 1]\n " color=yellow style=filled] -"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" [label="3: Return Stmt \n _=*&t:int* [line 141, column 10]\n n$1=*&t:int* [line 141, column 10]\n n$2=*n$1:int [line 141, column 10]\n *&return:int=n$2 [line 141, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 141, column 3]\n APPLY_ABSTRACTION; [line 141, column 3]\n " shape="box"] +"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" [label="3: Return Stmt \n _=*&t:int* [line 143, column 10]\n n$1=*&t:int* [line 143, column 10]\n n$2=*n$1:int [line 143, column 10]\n *&return:int=n$2 [line 143, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 143, column 3]\n APPLY_ABSTRACTION; [line 143, column 3]\n " shape="box"] "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_2" ; -"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 140, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 142, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,&a:int*) [line 142, column 3]\n EXIT_SCOPE(_,n$4,a); [line 142, column 3]\n " shape="box"] "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_4" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_3" ; -"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 139, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 141, column 23]\n EXIT_SCOPE(n$5); [line 141, column 23]\n " shape="box"] "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_5" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_4" ; -"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 138, column 3]\n *&a:int=0 [line 138, column 3]\n " shape="box"] +"getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" [label="6: DeclStmt \n VARIABLE_DECLARED(a:int); [line 140, column 3]\n *&a:int=0 [line 140, column 3]\n " shape="box"] "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_6" -> "getRef_ok_deref#10111201054364386601.e514c65ac6978a31376e6032d81b3d16_5" ; @@ -245,18 +245,18 @@ digraph cfg { "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_1" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_5" ; -"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_2" [label="2: Exit operator_star_null_deref1 \n NULLIFY(&t); [line 110, column 1]\n " color=yellow style=filled] +"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_2" [label="2: Exit operator_star_null_deref1 \n NULLIFY(&t); [line 112, column 1]\n " color=yellow style=filled] -"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" [label="3: Return Stmt \n n$1=*&t:int* [line 109, column 10]\n n$2=*n$1:int [line 109, column 10]\n *&return:int=n$2 [line 109, column 3]\n EXIT_SCOPE(n$1,n$2,t); [line 109, column 3]\n APPLY_ABSTRACTION; [line 109, column 3]\n " shape="box"] +"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" [label="3: Return Stmt \n n$1=*&t:int* [line 111, column 10]\n n$2=*n$1:int [line 111, column 10]\n *&return:int=n$2 [line 111, column 3]\n EXIT_SCOPE(n$1,n$2,t); [line 111, column 3]\n APPLY_ABSTRACTION; [line 111, column 3]\n " shape="box"] "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_2" ; -"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 108, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 110, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,null:int*) [line 110, column 3]\n EXIT_SCOPE(_,n$4); [line 110, column 3]\n " shape="box"] "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_4" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_3" ; -"operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 107, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 109, column 23]\n EXIT_SCOPE(n$5); [line 109, column 23]\n " shape="box"] "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_5" -> "operator_star_null_deref1#14187169119337849630.74372e24230903d2d4cacecae74f498d_4" ; @@ -264,18 +264,18 @@ digraph cfg { "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_1" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_5" ; -"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_2" [label="2: Exit operator_star_null_deref2 \n NULLIFY(&t); [line 116, column 1]\n " color=yellow style=filled] +"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_2" [label="2: Exit operator_star_null_deref2 \n NULLIFY(&t); [line 118, column 1]\n " color=yellow style=filled] -"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" [label="3: Return Stmt \n _=*&t:int* [line 115, column 10]\n n$1=*&t:int* [line 115, column 10]\n n$2=*n$1:int [line 115, column 10]\n *&return:int=n$2 [line 115, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 115, column 3]\n APPLY_ABSTRACTION; [line 115, column 3]\n " shape="box"] +"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" [label="3: Return Stmt \n _=*&t:int* [line 117, column 10]\n n$1=*&t:int* [line 117, column 10]\n n$2=*n$1:int [line 117, column 10]\n *&return:int=n$2 [line 117, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 117, column 3]\n APPLY_ABSTRACTION; [line 117, column 3]\n " shape="box"] "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_2" ; -"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 114, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 116, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,null:int*) [line 116, column 3]\n EXIT_SCOPE(_,n$4); [line 116, column 3]\n " shape="box"] "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_4" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_3" ; -"operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 113, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 115, column 23]\n EXIT_SCOPE(n$5); [line 115, column 23]\n " shape="box"] "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_5" -> "operator_star_null_deref2#14189968475942707161.6f6b808f2059b0f1bd8edd63f3e0c27b_4" ; @@ -283,18 +283,18 @@ digraph cfg { "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_1" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_5" ; -"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_2" [label="2: Exit operator_star_ok_deref \n NULLIFY(&t); [line 123, column 1]\n NULLIFY(&a); [line 123, column 1]\n " color=yellow style=filled] +"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_2" [label="2: Exit operator_star_ok_deref \n NULLIFY(&a); [line 125, column 1]\n NULLIFY(&t); [line 125, column 1]\n " color=yellow style=filled] -"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" [label="3: Return Stmt \n _=*&t:int* [line 122, column 10]\n n$1=*&t:int* [line 122, column 10]\n n$2=*n$1:int [line 122, column 10]\n *&return:int=n$2 [line 122, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 122, column 3]\n APPLY_ABSTRACTION; [line 122, column 3]\n " shape="box"] +"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" [label="3: Return Stmt \n _=*&t:int* [line 124, column 10]\n n$1=*&t:int* [line 124, column 10]\n n$2=*n$1:int [line 124, column 10]\n *&return:int=n$2 [line 124, column 3]\n EXIT_SCOPE(_,n$1,n$2,t); [line 124, column 3]\n APPLY_ABSTRACTION; [line 124, column 3]\n " shape="box"] "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_2" ; -"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_4" [label="4: Call _fun_TranslateAsPtr::setPtr \n _=*&t:int* [line 121, column 3]\n n$4=_fun_TranslateAsPtr::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::setPtr \n _=*&t:int* [line 123, column 3]\n n$4=_fun_TranslateAsPtr::setPtr(&t:int*&,&a:int*) [line 123, column 3]\n EXIT_SCOPE(_,n$4,a); [line 123, column 3]\n " shape="box"] "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_4" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_3" ; -"operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_5" [label="5: DeclStmt \n VARIABLE_DECLARED(t:int*); [line 120, column 3]\n n$5=_fun_TranslateAsPtr::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::TranslateAsPtr(&t:int**,null:int*) [line 122, column 23]\n EXIT_SCOPE(n$5); [line 122, column 23]\n " shape="box"] "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_5" -> "operator_star_ok_deref#11345277927099423171.138b78e88dab5887cd2f20f2590c779f_4" ; @@ -312,7 +312,7 @@ digraph cfg { "setPtr#TranslateAsPtr#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_2" [label="2: Exit TranslateAsPtr::setPtr \n " color=yellow style=filled] -"setPtr#TranslateAsPtr#(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#(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#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_3" -> "setPtr#TranslateAsPtr#(11427652750021041520).3f4d983a0a5cf5a43b2e4fd66c30c6a9_2" ; @@ -351,7 +351,7 @@ digraph cfg { "TranslateAsPtr#TranslateAsPtr#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_2" [label="2: Exit TranslateAsPtr::TranslateAsPtr \n " color=yellow style=filled] -"TranslateAsPtr#TranslateAsPtr#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_3" [label="3: Call _fun_TranslateAsPtr::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::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#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_3" [label="3: Call _fun_TranslateAsPtr::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::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#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_3" -> "TranslateAsPtr#TranslateAsPtr#{16989717360382977660}.33ce04b76efc158540bbe4b4b3c6897f_2" ; diff --git a/infer/tests/codetoanalyze/cpp/siof/Makefile b/infer/tests/codetoanalyze/cpp/siof/Makefile index e32278d4f..c96f76262 100644 --- a/infer/tests/codetoanalyze/cpp/siof/Makefile +++ b/infer/tests/codetoanalyze/cpp/siof/Makefile @@ -6,8 +6,8 @@ TESTS_DIR = ../../.. # see explanations in cpp/errors/Makefile for the custom isystem -CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c -INFER_OPTIONS = --siof-only --cxx-infer-headers --debug-exceptions --project-root $(TESTS_DIR) +CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c +INFER_OPTIONS = --siof-only --siof-check-iostreams --debug-exceptions --project-root $(TESTS_DIR) INFERPRINT_OPTIONS = --issues-tests SOURCES = \ diff --git a/infer/tests/codetoanalyze/cpp/siof/issues.exp b/infer/tests/codetoanalyze/cpp/siof/issues.exp index 93d8fc411..25b6896fd 100644 --- a/infer/tests/codetoanalyze/cpp/siof/issues.exp +++ b/infer/tests/codetoanalyze/cpp/siof/issues.exp @@ -4,8 +4,11 @@ codetoanalyze/cpp/siof/siof/duplicate_reports.cpp, __infer_globals_initializer_m codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_X::static_pod_accesses_non_pod_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of X::static_pod_accesses_non_pod_bad,call to access_to_non_pod,access to global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp] codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_X::static_pod_accesses_non_pod_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of X::static_pod_accesses_non_pod_bad,call to access_to_non_pod,access to some_other_global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp] codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object2_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object2_bad,call to access_to_non_pod,access to global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp] +codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object2_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object2_bad,call to SomeOtherNonPODObject::SomeOtherNonPODObject,call to safe_streams,access to std::cout|] codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object2_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object2_bad,call to access_to_non_pod,access to some_other_global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp] codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object3_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object3_bad,call to access_to_templated_non_pod,access to global_object3|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp] +codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object3_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object3_bad,call to SomeOtherNonPODObject::SomeOtherNonPODObject,call to safe_streams,access to std::cout|] +codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object4_good, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object4_good,call to SomeOtherNonPODObject::SomeOtherNonPODObject,call to safe_streams,access to std::cout|] codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_another_global_object_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of another_global_object_bad,call to SomeOtherNonPODObject::SomeOtherNonPODObject,access to extern_global_object|] codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_initWithGlobal_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of initWithGlobal_bad,call to getGlobalNonPOD,access to global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp] codetoanalyze/cpp/siof/siof/siof.cpp, __infer_globals_initializer_initWithGlobal_bad, 0, STATIC_INITIALIZATION_ORDER_FIASCO, no_bucket, ERROR, [initialization of initWithGlobal_bad,call to getGlobalNonPOD,access to some_other_global_object2|codetoanalyze/cpp/siof/siof/siof_different_tu.cpp] diff --git a/infer/tests/codetoanalyze/cpp/uninit/Makefile b/infer/tests/codetoanalyze/cpp/uninit/Makefile index c26a70a49..2fb98168c 100644 --- a/infer/tests/codetoanalyze/cpp/uninit/Makefile +++ b/infer/tests/codetoanalyze/cpp/uninit/Makefile @@ -6,7 +6,7 @@ TESTS_DIR = ../../.. # see explanations in cpp/errors/Makefile for the custom isystem -CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(MODELS_DIR)/cpp/include -isystem$(CLANG_INCLUDES)/c++/v1/ -c +CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c INFER_OPTIONS = --uninit-only --debug-exceptions --project-root $(TESTS_DIR) INFERPRINT_OPTIONS = --issues-tests