[tests] Create integration tests for clang translation logic

Summary: clang has very complicated logic what to translate based on `project_root` and filename. Add tests for different situations in regard of symbolic links in path/project_root

Reviewed By: jvillard

Differential Revision: D4168551

fbshipit-source-id: 586b364
master
Andrzej Kotulski 8 years ago committed by Facebook Github Bot
parent 8d48c108ca
commit 4512fcd8ef

@ -13,7 +13,7 @@ ifeq ($(IS_FACEBOOK_TREE),yes)
include $(ROOT_DIR)/facebook/Makefile.env
endif
BUILD_SYSTEMS_TESTS = assembly project_root_rel
BUILD_SYSTEMS_TESTS = assembly clang_translation project_root_rel
ifneq ($(ANT),no)
BUILD_SYSTEMS_TESTS += ant
endif

@ -10,22 +10,4 @@
#pragma once
#include <infer_model/portability.h>
#include <cstdlib>
#include <cstdio>
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{};
}
#include <infer_no_model/crash_on_exec.h>

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

@ -1034,7 +1034,7 @@ let print_icfg_dotty source cfg =
let fname =
if Config.frontend_tests
then
(DB.source_file_to_string source) ^ ".test.dot"
(DB.source_file_to_abs_path source) ^ ".test.dot"
else
DB.filename_to_string
(DB.Results_dir.path_to_filename

@ -259,10 +259,13 @@ let models_dir =
let models_jar =
lib_dir // "java" // "models.jar"
let cpp_models_dir =
let cpp_extra_include_dir =
let dir = bin_dir // Filename.parent_dir_name // "models" // "cpp" // "include" in
Utils.filename_to_absolute dir (* Normalize the path *)
let cpp_models_dir =
cpp_extra_include_dir // "infer_model"
let wrappers_dir =
lib_dir // "wrappers"

@ -61,6 +61,7 @@ val buck_infer_deps_file_name : string
val captured_dir_name : string
val checks_disabled_by_default : string list
val clang_initializer_prefix : string
val cpp_extra_include_dir : string
val cpp_models_dir : string
val csl_analysis : bool
val current_exe : CommandLineOption.exe

@ -156,7 +156,7 @@ 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 infer_cxx_models (IList.rev_append ["-isystem", Config.cpp_models_dir]) |>
argv_do_if infer_cxx_models (IList.rev_append ["-isystem", Config.cpp_extra_include_dir]) |>
IList.rev_append [
"-load",
plugin_path,

@ -0,0 +1,43 @@
# Copyright (c) 2016 - present Facebook, Inc.
# All rights reserved.
#
# This source code is licensed under the BSD style license found in the
# LICENSE file in the root directory of this source tree. An additional grant
# of patent rights can be found in the PATENTS file in the same directory.
TESTS_DIR = ../..
# see explanations in cpp/errors/Makefile for the custom isystem
CLANG_OPTIONS = -x c++ -std=c++11 -nostdinc++ -isystem$(CLANG_INCLUDES)/c++/v1/ -c
ROOT = ../codetoanalyze/clang_translation/src
SYM_ROOT = ../codetoanalyze/clang_translation/tsrc_symlink
SOURCES = \
$(ROOT)/main.cpp \
$(ROOT)/main_default_root.cpp \
$(SYM_ROOT)/main_symlink.cpp \
$(SYM_ROOT)/main_default_symlink.cpp \
include $(TESTS_DIR)/clang-frontend.make
INFER_OPTIONS = -a capture --frontend-tests --cxx --skip-translation-headers exclude_dir
compile:
clang $(CLANG_OPTIONS) $(SOURCES)
capture:
$(INFER_BIN) $(INFER_OPTIONS) --project-root $(ROOT) -- clang $(CLANG_OPTIONS) $(ROOT)/main.cpp
$(INFER_BIN) $(INFER_OPTIONS) --project-root $(SYM_ROOT) -- clang $(CLANG_OPTIONS) $(SYM_ROOT)/main_symlink.cpp
cd $(ROOT) && $(INFER_BIN) $(INFER_OPTIONS) -- clang $(CLANG_OPTIONS) main_default_root.cpp
cd $(SYM_ROOT) && $(INFER_BIN) $(INFER_OPTIONS) -- clang $(CLANG_OPTIONS) main_default_symlink.cpp
# test_extra needs to be separate target. Otherwise commands from test
# target in common Makefile won't run
test: test_extra
# all dot files should be exactly the same - if they aren't there is something wrong
test_extra:
diff $(ROOT)/main.cpp.dot $(SYM_ROOT)/main_symlink.cpp.dot && \
diff $(ROOT)/main.cpp.dot $(ROOT)/main_default_root.cpp.dot && \
diff $(ROOT)/main.cpp.dot $(SYM_ROOT)/main_default_symlink.cpp.dot

@ -0,0 +1,13 @@
/*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#pragma once
namespace external {
int fun(int a) { return a; }
}

@ -0,0 +1,13 @@
/*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#pragma once
namespace internal_exclude {
int fun(int a) { return a; }
}

@ -0,0 +1,24 @@
/*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#include <memory>
#include <string>
#include "project_lib.h"
#include "external/external_lib.h"
#include "exclude_dir/lib.h"
int main() {
internal::fun(1); // internal::fun definition should be translated
internal_exclude::fun(1); // internal_exclude::fun shouldn't be translated
external::fun(1); // external::fun definition shouldn't be translated
std::shared_ptr<int> x; // shared_ptr::shared_ptr model should be translated
std::string s("1234"); // string::string shouldn't be translated (there is no
// model for it)
}

@ -0,0 +1,89 @@
/* @generated */
digraph iCFG {
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" [label="3: Return Stmt \n n$0=*&a:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" ;
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" [label="2: Exit internal::fun \n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" [label="1: Start internal::fun\nFormals: a:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" [label="3: Call _fun_std::__1::shared_ptr<int>_reset<int,_void> \n n$0=*&this:int ** [line 165]\n _=*n$0:int * [line 165]\n _fun_std::__1::shared_ptr<int>_reset<int,_void>(n$0:int **,null:int *) [line 165]\n " shape="box"]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" [label="2: Exit std::__1::shared_ptr<int>_~shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" [label="1: Start std::__1::shared_ptr<int>_~shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 165]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void ** [line 51]\n n$1=*&value:void * [line 51]\n *n$0:void *=n$1 [line 51]\n " shape="box"]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" [label="2: Exit std::__1::shared_ptr<int>_model_set \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" [label="1: Start std::__1::shared_ptr<int>_model_set\nFormals: self:void ** value:void *\nLocals: \n DECLARE_LOCALS(&return); [line 50]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" ;
"main.fad58de7366495db4650cfefac2fcd61_7" [label="7: Call _fun_internal::fun \n n$3=_fun_internal::fun(1:int ) [line 18]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_7" -> "main.fad58de7366495db4650cfefac2fcd61_6" ;
"main.fad58de7366495db4650cfefac2fcd61_6" [label="6: Call _fun_internal_exclude::fun \n n$2=_fun_internal_exclude::fun(1:int ) [line 19]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_6" -> "main.fad58de7366495db4650cfefac2fcd61_5" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: Call _fun_external::fun \n n$1=_fun_external::fun(1:int ) [line 20]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
"main.fad58de7366495db4650cfefac2fcd61_4" [label="4: DeclStmt \n _fun_std::__1::shared_ptr<int>_shared_ptr(&x:int **) [line 21]\n n$0=*&x:int * [line 21]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: DeclStmt \n _fun_std::__1::basic_string<8d2d7b7b909d4c24>_basic_string(&s:class std::__1::basic_string<8d2d7b7b909d4c24> *,\"1234\":char *) [line 22]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:class std::__1::basic_string<8d2d7b7b909d4c24> x:int * \n DECLARE_LOCALS(&return,&s,&x); [line 17]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_7" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 223]\n n$1=*&p:int * [line 223]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,n$1:void *) [line 223]\n " shape="box"]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" [label="2: Exit std::__1::shared_ptr<int>_reset<int,_void> \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" [label="1: Start std::__1::shared_ptr<int>_reset<int,_void>\nFormals: this:int ** p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 217]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" [label="4: Constructor Init \n n$1=*&this:int ** [line 85]\n _fun_std::__1::std__shared_ptr<int>_std__shared_ptr(n$1:int **) [line 84]\n n$2=*n$1:int * [line 84]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 85]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,null:void *) [line 85]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" [label="2: Exit std::__1::shared_ptr<int>_shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" [label="1: Start std::__1::shared_ptr<int>_shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 84]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" ;
}

@ -0,0 +1,89 @@
/* @generated */
digraph iCFG {
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" [label="3: Return Stmt \n n$0=*&a:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" ;
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" [label="2: Exit internal::fun \n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" [label="1: Start internal::fun\nFormals: a:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" [label="3: Call _fun_std::__1::shared_ptr<int>_reset<int,_void> \n n$0=*&this:int ** [line 165]\n _=*n$0:int * [line 165]\n _fun_std::__1::shared_ptr<int>_reset<int,_void>(n$0:int **,null:int *) [line 165]\n " shape="box"]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" [label="2: Exit std::__1::shared_ptr<int>_~shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" [label="1: Start std::__1::shared_ptr<int>_~shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 165]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void ** [line 51]\n n$1=*&value:void * [line 51]\n *n$0:void *=n$1 [line 51]\n " shape="box"]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" [label="2: Exit std::__1::shared_ptr<int>_model_set \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" [label="1: Start std::__1::shared_ptr<int>_model_set\nFormals: self:void ** value:void *\nLocals: \n DECLARE_LOCALS(&return); [line 50]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" ;
"main.fad58de7366495db4650cfefac2fcd61_7" [label="7: Call _fun_internal::fun \n n$3=_fun_internal::fun(1:int ) [line 18]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_7" -> "main.fad58de7366495db4650cfefac2fcd61_6" ;
"main.fad58de7366495db4650cfefac2fcd61_6" [label="6: Call _fun_internal_exclude::fun \n n$2=_fun_internal_exclude::fun(1:int ) [line 19]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_6" -> "main.fad58de7366495db4650cfefac2fcd61_5" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: Call _fun_external::fun \n n$1=_fun_external::fun(1:int ) [line 20]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
"main.fad58de7366495db4650cfefac2fcd61_4" [label="4: DeclStmt \n _fun_std::__1::shared_ptr<int>_shared_ptr(&x:int **) [line 21]\n n$0=*&x:int * [line 21]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: DeclStmt \n _fun_std::__1::basic_string<8d2d7b7b909d4c24>_basic_string(&s:class std::__1::basic_string<8d2d7b7b909d4c24> *,\"1234\":char *) [line 22]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:class std::__1::basic_string<8d2d7b7b909d4c24> x:int * \n DECLARE_LOCALS(&return,&s,&x); [line 17]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_7" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 223]\n n$1=*&p:int * [line 223]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,n$1:void *) [line 223]\n " shape="box"]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" [label="2: Exit std::__1::shared_ptr<int>_reset<int,_void> \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" [label="1: Start std::__1::shared_ptr<int>_reset<int,_void>\nFormals: this:int ** p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 217]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" [label="4: Constructor Init \n n$1=*&this:int ** [line 85]\n _fun_std::__1::std__shared_ptr<int>_std__shared_ptr(n$1:int **) [line 84]\n n$2=*n$1:int * [line 84]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 85]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,null:void *) [line 85]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" [label="2: Exit std::__1::shared_ptr<int>_shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" [label="1: Start std::__1::shared_ptr<int>_shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 84]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" ;
}

@ -0,0 +1,89 @@
/* @generated */
digraph iCFG {
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" [label="3: Return Stmt \n n$0=*&a:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" ;
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" [label="2: Exit internal::fun \n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" [label="1: Start internal::fun\nFormals: a:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" [label="3: Call _fun_std::__1::shared_ptr<int>_reset<int,_void> \n n$0=*&this:int ** [line 165]\n _=*n$0:int * [line 165]\n _fun_std::__1::shared_ptr<int>_reset<int,_void>(n$0:int **,null:int *) [line 165]\n " shape="box"]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" [label="2: Exit std::__1::shared_ptr<int>_~shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" [label="1: Start std::__1::shared_ptr<int>_~shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 165]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void ** [line 51]\n n$1=*&value:void * [line 51]\n *n$0:void *=n$1 [line 51]\n " shape="box"]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" [label="2: Exit std::__1::shared_ptr<int>_model_set \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" [label="1: Start std::__1::shared_ptr<int>_model_set\nFormals: self:void ** value:void *\nLocals: \n DECLARE_LOCALS(&return); [line 50]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" ;
"main.fad58de7366495db4650cfefac2fcd61_7" [label="7: Call _fun_internal::fun \n n$3=_fun_internal::fun(1:int ) [line 18]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_7" -> "main.fad58de7366495db4650cfefac2fcd61_6" ;
"main.fad58de7366495db4650cfefac2fcd61_6" [label="6: Call _fun_internal_exclude::fun \n n$2=_fun_internal_exclude::fun(1:int ) [line 19]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_6" -> "main.fad58de7366495db4650cfefac2fcd61_5" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: Call _fun_external::fun \n n$1=_fun_external::fun(1:int ) [line 20]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
"main.fad58de7366495db4650cfefac2fcd61_4" [label="4: DeclStmt \n _fun_std::__1::shared_ptr<int>_shared_ptr(&x:int **) [line 21]\n n$0=*&x:int * [line 21]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: DeclStmt \n _fun_std::__1::basic_string<8d2d7b7b909d4c24>_basic_string(&s:class std::__1::basic_string<8d2d7b7b909d4c24> *,\"1234\":char *) [line 22]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:class std::__1::basic_string<8d2d7b7b909d4c24> x:int * \n DECLARE_LOCALS(&return,&s,&x); [line 17]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_7" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 223]\n n$1=*&p:int * [line 223]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,n$1:void *) [line 223]\n " shape="box"]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" [label="2: Exit std::__1::shared_ptr<int>_reset<int,_void> \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" [label="1: Start std::__1::shared_ptr<int>_reset<int,_void>\nFormals: this:int ** p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 217]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" [label="4: Constructor Init \n n$1=*&this:int ** [line 85]\n _fun_std::__1::std__shared_ptr<int>_std__shared_ptr(n$1:int **) [line 84]\n n$2=*n$1:int * [line 84]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 85]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,null:void *) [line 85]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" [label="2: Exit std::__1::shared_ptr<int>_shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" [label="1: Start std::__1::shared_ptr<int>_shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 84]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" ;
}

@ -0,0 +1,89 @@
/* @generated */
digraph iCFG {
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" [label="3: Return Stmt \n n$0=*&a:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" ;
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_2" [label="2: Exit internal::fun \n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" [label="1: Start internal::fun\nFormals: a:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
"internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_1" -> "internal::fun{d41d8cd98f00b204e9800998ecf8427e_ZN8internal3funEi}.85135ab105a259368b1d7ebf1f3d3ac2_3" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" [label="3: Call _fun_std::__1::shared_ptr<int>_reset<int,_void> \n n$0=*&this:int ** [line 165]\n _=*n$0:int * [line 165]\n _fun_std::__1::shared_ptr<int>_reset<int,_void>(n$0:int **,null:int *) [line 165]\n " shape="box"]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" ;
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_2" [label="2: Exit std::__1::shared_ptr<int>_~shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" [label="1: Start std::__1::shared_ptr<int>_~shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 165]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_1" -> "std::__1::shared_ptr<int>_~shared_ptr(_ZNSt3__110shared_ptrIiED0Ev).388e7f06faa2f498fd08f3d3c50ca31a_3" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:void ** [line 51]\n n$1=*&value:void * [line 51]\n *n$0:void *=n$1 [line 51]\n " shape="box"]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" ;
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_2" [label="2: Exit std::__1::shared_ptr<int>_model_set \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" [label="1: Start std::__1::shared_ptr<int>_model_set\nFormals: self:void ** value:void *\nLocals: \n DECLARE_LOCALS(&return); [line 50]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_1" -> "std::__1::shared_ptr<int>_model_set(_ZNSt3__110shared_ptrIiE9model_setEPPKvS3_).c02dbe299962364cf3c5255e9c8d287d_3" ;
"main.fad58de7366495db4650cfefac2fcd61_7" [label="7: Call _fun_internal::fun \n n$3=_fun_internal::fun(1:int ) [line 18]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_7" -> "main.fad58de7366495db4650cfefac2fcd61_6" ;
"main.fad58de7366495db4650cfefac2fcd61_6" [label="6: Call _fun_internal_exclude::fun \n n$2=_fun_internal_exclude::fun(1:int ) [line 19]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_6" -> "main.fad58de7366495db4650cfefac2fcd61_5" ;
"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: Call _fun_external::fun \n n$1=_fun_external::fun(1:int ) [line 20]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_4" ;
"main.fad58de7366495db4650cfefac2fcd61_4" [label="4: DeclStmt \n _fun_std::__1::shared_ptr<int>_shared_ptr(&x:int **) [line 21]\n n$0=*&x:int * [line 21]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ;
"main.fad58de7366495db4650cfefac2fcd61_3" [label="3: DeclStmt \n _fun_std::__1::basic_string<8d2d7b7b909d4c24>_basic_string(&s:class std::__1::basic_string<8d2d7b7b909d4c24> *,\"1234\":char *) [line 22]\n " shape="box"]
"main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ;
"main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: s:class std::__1::basic_string<8d2d7b7b909d4c24> x:int * \n DECLARE_LOCALS(&return,&s,&x); [line 17]\n " color=yellow style=filled]
"main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_7" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 223]\n n$1=*&p:int * [line 223]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,n$1:void *) [line 223]\n " shape="box"]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" ;
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_2" [label="2: Exit std::__1::shared_ptr<int>_reset<int,_void> \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" [label="1: Start std::__1::shared_ptr<int>_reset<int,_void>\nFormals: this:int ** p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 217]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_1" -> "std::__1::shared_ptr<int>_reset<int,_void>(_ZNSt3__110shared_ptrIiE5resetIivEEvPT_).29e462552cba695192437aa4bfbf146e_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" [label="4: Constructor Init \n n$1=*&this:int ** [line 85]\n _fun_std::__1::std__shared_ptr<int>_std__shared_ptr(n$1:int **) [line 84]\n n$2=*n$1:int * [line 84]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" [label="3: Call _fun_std::__1::shared_ptr<int>_model_set \n n$0=*&this:int ** [line 85]\n _fun_std::__1::shared_ptr<int>_model_set(n$0:void **,null:void *) [line 85]\n " shape="box"]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_3" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" ;
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_2" [label="2: Exit std::__1::shared_ptr<int>_shared_ptr \n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" [label="1: Start std::__1::shared_ptr<int>_shared_ptr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 84]\n " color=yellow style=filled]
"std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_1" -> "std::__1::shared_ptr<int>_shared_ptr{_ZNSt3__110shared_ptrIiEC1Ev}.2e163b5142d39d575d5eeb568316078d_4" ;
}

@ -0,0 +1,16 @@
/*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#pragma once
namespace internal {
int fun(int a) { return a; }
// function shouldn't be translated if it's not used in source file
int unused(int a) { return a; }
}
Loading…
Cancel
Save