Summary: We need to make sure that destructors of virtual base classes are called only once. Similarly to what clang does, we have two destructors for a class: a destructor wrapper and an inner destructor. Destructor wrapper is called from outside, i.e., when variables go out of scope or when destructors of fields are being called. Destructor wrappers have calls to inner destructors of all virtual base classes in the inheritance as their bodies. Inner destructors have destructor bodies and calls to destructor wrappers of fields and inner destructors of non-virtual base classes. Reviewed By: dulmarod Differential Revision: D5834555 fbshipit-source-id: 51db238master
parent
7aa199f707
commit
ac33bf6e66
@ -1,121 +1,266 @@
|
|||||||
/* @generated */
|
/* @generated */
|
||||||
digraph iCFG {
|
digraph iCFG {
|
||||||
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_1" [label="1: Start A_A\nFormals: this:A*\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
|
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_1" [label="1: Start A_A\nFormals: this:A*\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_1" -> "A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_2" ;
|
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_1" -> "A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_3" ;
|
||||||
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_2" [label="2: Exit A_A \n " color=yellow style=filled]
|
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_2" [label="2: Exit A_A \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_1" [label="1: Start A_~A\nFormals: this:A*\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
|
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_3" [label="3: Constructor Init \n n$0=*&this:A* [line 16]\n _fun_T_T(n$0:A*) [line 16]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_1" -> "~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_2" ;
|
"A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_3" -> "A#A#{_ZN1AC1Ev}.2d3ff9efa1bcbece3182f08e3514d828_2" ;
|
||||||
|
"__infer_inner_destructor_~A#A#(_ZN1AD0Ev).d7916f7ac2ccc90a14007799f4bf9d5a_1" [label="1: Start A___infer_inner_destructor_~A\nFormals: this:A*\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~A#A#(_ZN1AD0Ev).d7916f7ac2ccc90a14007799f4bf9d5a_1" -> "__infer_inner_destructor_~A#A#(_ZN1AD0Ev).d7916f7ac2ccc90a14007799f4bf9d5a_2" ;
|
||||||
|
"__infer_inner_destructor_~A#A#(_ZN1AD0Ev).d7916f7ac2ccc90a14007799f4bf9d5a_2" [label="2: Exit A___infer_inner_destructor_~A \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_1" [label="1: Start A_~A\nFormals: this:A*\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_1" -> "~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_3" ;
|
||||||
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_2" [label="2: Exit A_~A \n " color=yellow style=filled]
|
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_2" [label="2: Exit A_~A \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_1" [label="1: Start B_B\nFormals: this:B*\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled]
|
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_3" [label="3: Destruction \n n$0=*&this:A* [line 17]\n _=*n$0:A [line 17]\n _fun_A___infer_inner_destructor_~A(n$0:A*) [line 17]\n _=*n$0:A [line 17]\n _fun_T___infer_inner_destructor_~T(n$0:A*) [line 17]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_3" -> "~A#A#(_ZN1AD0Ev).56ee06aef571dbbd330acc7aac738fb2_2" ;
|
||||||
|
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_1" [label="1: Start B_B\nFormals: this:B*\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_1" -> "B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_3" ;
|
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_1" -> "B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_4" ;
|
||||||
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_2" [label="2: Exit B_B \n " color=yellow style=filled]
|
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_2" [label="2: Exit B_B \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_3" [label="3: Constructor Init \n n$0=*&this:B* [line 16]\n _fun_A_A(n$0:B*) [line 16]\n " shape="box"]
|
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_3" [label="3: Constructor Init \n n$0=*&this:B* [line 21]\n _fun_A_A(n$0:B*) [line 21]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_3" -> "B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_2" ;
|
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_3" -> "B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_2" ;
|
||||||
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_1" [label="1: Start B_~B\nFormals: this:B*\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
|
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_4" [label="4: Constructor Init \n n$1=*&this:B* [line 21]\n _fun_T_T(n$1:B*) [line 21]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_4" -> "B#B#{_ZN1BC1Ev}.7d36f8f9e357133df32509b5d80a4f1d_3" ;
|
||||||
|
"__infer_inner_destructor_~B#B#(_ZN1BD0Ev).7405d4358f39a25c16cc2f7f705f5618_1" [label="1: Start B___infer_inner_destructor_~B\nFormals: this:B*\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~B#B#(_ZN1BD0Ev).7405d4358f39a25c16cc2f7f705f5618_1" -> "__infer_inner_destructor_~B#B#(_ZN1BD0Ev).7405d4358f39a25c16cc2f7f705f5618_2" ;
|
||||||
|
"__infer_inner_destructor_~B#B#(_ZN1BD0Ev).7405d4358f39a25c16cc2f7f705f5618_2" [label="2: Exit B___infer_inner_destructor_~B \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_1" [label="1: Start B_~B\nFormals: this:B*\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_1" -> "~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_3" ;
|
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_1" -> "~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_3" ;
|
||||||
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_2" [label="2: Exit B_~B \n " color=yellow style=filled]
|
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_2" [label="2: Exit B_~B \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_3" [label="3: Destruction \n n$0=*&this:B* [line 17]\n _=*n$0:B [line 17]\n _fun_A_~A(n$0:B*) [line 17]\n " shape="box"]
|
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_3" [label="3: Destruction \n n$0=*&this:B* [line 22]\n _=*n$0:B [line 22]\n _fun_B___infer_inner_destructor_~B(n$0:B*) [line 22]\n _=*n$0:B [line 22]\n _fun_A___infer_inner_destructor_~A(n$0:B*) [line 22]\n _=*n$0:B [line 22]\n _fun_T___infer_inner_destructor_~T(n$0:B*) [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_3" -> "~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_2" ;
|
"~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_3" -> "~B#B#(_ZN1BD0Ev).cd4fb9d54ed1b3496d9539c455e8ee1d_2" ;
|
||||||
"C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_1" [label="1: Start C_C\nFormals: this:C*\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled]
|
"C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_1" [label="1: Start C_C\nFormals: this:C*\nLocals: \n DECLARE_LOCALS(&return); [line 26]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_1" -> "C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_2" ;
|
"C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_1" -> "C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_2" ;
|
||||||
"C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_2" [label="2: Exit C_C \n " color=yellow style=filled]
|
"C#C#{_ZN1CC1Ev}.3e03405a28565a3b8cdc219c868b91d4_2" [label="2: Exit C_C \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_1" [label="1: Start C_~C\nFormals: this:C*\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled]
|
"__infer_inner_destructor_~C#C#(_ZN1CD0Ev).383a303e5889d004732e2e54cf423aff_1" [label="1: Start C___infer_inner_destructor_~C\nFormals: this:C*\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~C#C#(_ZN1CD0Ev).383a303e5889d004732e2e54cf423aff_1" -> "__infer_inner_destructor_~C#C#(_ZN1CD0Ev).383a303e5889d004732e2e54cf423aff_2" ;
|
||||||
|
"__infer_inner_destructor_~C#C#(_ZN1CD0Ev).383a303e5889d004732e2e54cf423aff_2" [label="2: Exit C___infer_inner_destructor_~C \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_1" [label="1: Start C_~C\nFormals: this:C*\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_1" -> "~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_2" ;
|
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_1" -> "~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_3" ;
|
||||||
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_2" [label="2: Exit C_~C \n " color=yellow style=filled]
|
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_2" [label="2: Exit C_~C \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_1" [label="1: Start D_D\nFormals: this:D*\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled]
|
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_3" [label="3: Destruction \n n$0=*&this:C* [line 27]\n _=*n$0:C [line 27]\n _fun_C___infer_inner_destructor_~C(n$0:C*) [line 27]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_3" -> "~C#C#(_ZN1CD0Ev).5004cab30e9be2ae0ac437333f531054_2" ;
|
||||||
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_1" [label="1: Start D_D\nFormals: this:D*\nLocals: \n DECLARE_LOCALS(&return); [line 32]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_1" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_5" ;
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_1" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_6" ;
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_2" [label="2: Exit D_D \n " color=yellow style=filled]
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_2" [label="2: Exit D_D \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_3" [label="3: Constructor Init \n n$0=*&this:D* [line 27]\n _fun_B_B(n$0.b:B*) [line 27]\n " shape="box"]
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_3" [label="3: Constructor Init \n n$0=*&this:D* [line 32]\n _fun_B_B(n$0.b:B*) [line 32]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_3" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_2" ;
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_3" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_2" ;
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_4" [label="4: Constructor Init \n n$1=*&this:D* [line 27]\n _fun_C_C(n$1:D*) [line 27]\n " shape="box"]
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_4" [label="4: Constructor Init \n n$1=*&this:D* [line 32]\n _fun_C_C(n$1:D*) [line 32]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_4" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_3" ;
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_4" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_3" ;
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_5" [label="5: Constructor Init \n n$2=*&this:D* [line 27]\n _fun_A_A(n$2:D*) [line 27]\n " shape="box"]
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_5" [label="5: Constructor Init \n n$2=*&this:D* [line 32]\n _fun_A_A(n$2:D*) [line 32]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_5" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_4" ;
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_5" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_4" ;
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_1" [label="1: Start D_~D\nFormals: this:D*\nLocals: a:A \n DECLARE_LOCALS(&return,&a); [line 28]\n " color=yellow style=filled]
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_6" [label="6: Constructor Init \n n$3=*&this:D* [line 32]\n _fun_T_T(n$3:D*) [line 32]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_1" -> "~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_5" ;
|
"D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_6" -> "D#D#{_ZN1DC1Ev}.1fb38ad288cb592a49d11e238b53d161_5" ;
|
||||||
|
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_1" [label="1: Start D_~D\nFormals: this:D*\nLocals: \n DECLARE_LOCALS(&return); [line 33]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_1" -> "~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_3" ;
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_2" [label="2: Exit D_~D \n " color=yellow style=filled]
|
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_2" [label="2: Exit D_~D \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_3" [label="3: Destruction \n n$0=*&this:D* [line 28]\n _=*n$0.b:B [line 28]\n _fun_B_~B(n$0.b:B*) [line 28]\n _=*n$0:D [line 28]\n _fun_C_~C(n$0:D*) [line 28]\n _=*n$0:D [line 28]\n _fun_A_~A(n$0:D*) [line 28]\n " shape="box"]
|
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_3" [label="3: Destruction \n n$0=*&this:D* [line 33]\n _=*n$0:D [line 33]\n _fun_D___infer_inner_destructor_~D(n$0:D*) [line 33]\n _=*n$0:D [line 33]\n _fun_T___infer_inner_destructor_~T(n$0:D*) [line 33]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_3" -> "~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_2" ;
|
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_3" -> "~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_2" ;
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_4" [label="4: Destruction \n _=*&a:A [line 28]\n _fun_A_~A(&a:A*) [line 28]\n " shape="box"]
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_1" [label="1: Start D___infer_inner_destructor_~D\nFormals: this:D*\nLocals: a:A \n DECLARE_LOCALS(&return,&a); [line 33]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_1" -> "__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_5" ;
|
||||||
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_2" [label="2: Exit D___infer_inner_destructor_~D \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_3" [label="3: Destruction \n n$0=*&this:D* [line 33]\n _=*n$0.b:B [line 33]\n _fun_B_~B(n$0.b:B*) [line 33]\n _=*n$0:D [line 33]\n _fun_C___infer_inner_destructor_~C(n$0:D*) [line 33]\n _=*n$0:D [line 33]\n _fun_A___infer_inner_destructor_~A(n$0:D*) [line 33]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_3" -> "__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_2" ;
|
||||||
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_4" [label="4: Destruction \n _=*&a:A [line 33]\n _fun_A_~A(&a:A*) [line 33]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_4" -> "~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_3" ;
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_4" -> "__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_3" ;
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_5" [label="5: DeclStmt \n _fun_A_A(&a:A*) [line 28]\n " shape="box"]
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_5" [label="5: DeclStmt \n _fun_A_A(&a:A*) [line 33]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_5" -> "~D#D#(_ZN1DD0Ev).927ae640f732cd5172d9f1a635578398_4" ;
|
"__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_5" -> "__infer_inner_destructor_~D#D#(_ZN1DD0Ev).fbd3458798cca31644b33a96a04d3fe2_4" ;
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_1" [label="1: Start E_E\nFormals: this:E*\nLocals: \n DECLARE_LOCALS(&return); [line 32]\n " color=yellow style=filled]
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_1" [label="1: Start E_E\nFormals: this:E*\nLocals: \n DECLARE_LOCALS(&return); [line 37]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_1" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_5" ;
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_1" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_7" ;
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_2" [label="2: Exit E_E \n " color=yellow style=filled]
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_2" [label="2: Exit E_E \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_3" [label="3: Constructor Init \n n$0=*&this:E* [line 32]\n _fun_D_D(n$0:E*) [line 32]\n " shape="box"]
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_3" [label="3: Constructor Init \n n$0=*&this:E* [line 37]\n _fun_D_D(n$0:E*) [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_3" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_2" ;
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_3" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_2" ;
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_4" [label="4: Constructor Init \n n$1=*&this:E* [line 32]\n _fun_C_C(n$1:E*) [line 32]\n " shape="box"]
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_4" [label="4: Constructor Init \n n$1=*&this:E* [line 37]\n _fun_C_C(n$1:E*) [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_4" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_3" ;
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_4" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_3" ;
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_5" [label="5: Constructor Init \n n$2=*&this:E* [line 32]\n _fun_B_B(n$2:E*) [line 32]\n " shape="box"]
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_5" [label="5: Constructor Init \n n$2=*&this:E* [line 37]\n _fun_B_B(n$2:E*) [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_5" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_4" ;
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_5" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_4" ;
|
||||||
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_1" [label="1: Start E_~E\nFormals: this:E*\nLocals: \n DECLARE_LOCALS(&return); [line 33]\n " color=yellow style=filled]
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_6" [label="6: Constructor Init \n n$3=*&this:E* [line 37]\n _fun_A_A(n$3:E*) [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_6" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_5" ;
|
||||||
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_7" [label="7: Constructor Init \n n$4=*&this:E* [line 37]\n _fun_T_T(n$4:E*) [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_7" -> "E#E#{_ZN1EC1Ev}.8eb6f0809ed40dd2a68db058b9bc4ade_6" ;
|
||||||
|
"__infer_inner_destructor_~E#E#(_ZN1ED0Ev).1cd2fde06f46ea9404c8354ab5ffff71_1" [label="1: Start E___infer_inner_destructor_~E\nFormals: this:E*\nLocals: \n DECLARE_LOCALS(&return); [line 38]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~E#E#(_ZN1ED0Ev).1cd2fde06f46ea9404c8354ab5ffff71_1" -> "__infer_inner_destructor_~E#E#(_ZN1ED0Ev).1cd2fde06f46ea9404c8354ab5ffff71_3" ;
|
||||||
|
"__infer_inner_destructor_~E#E#(_ZN1ED0Ev).1cd2fde06f46ea9404c8354ab5ffff71_2" [label="2: Exit E___infer_inner_destructor_~E \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~E#E#(_ZN1ED0Ev).1cd2fde06f46ea9404c8354ab5ffff71_3" [label="3: Destruction \n n$0=*&this:E* [line 38]\n _=*n$0:E [line 38]\n _fun_D___infer_inner_destructor_~D(n$0:E*) [line 38]\n _=*n$0:E [line 38]\n _fun_C___infer_inner_destructor_~C(n$0:E*) [line 38]\n _=*n$0:E [line 38]\n _fun_B___infer_inner_destructor_~B(n$0:E*) [line 38]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~E#E#(_ZN1ED0Ev).1cd2fde06f46ea9404c8354ab5ffff71_3" -> "__infer_inner_destructor_~E#E#(_ZN1ED0Ev).1cd2fde06f46ea9404c8354ab5ffff71_2" ;
|
||||||
|
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_1" [label="1: Start E_~E\nFormals: this:E*\nLocals: \n DECLARE_LOCALS(&return); [line 38]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_1" -> "~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_3" ;
|
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_1" -> "~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_3" ;
|
||||||
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_2" [label="2: Exit E_~E \n " color=yellow style=filled]
|
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_2" [label="2: Exit E_~E \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_3" [label="3: Destruction \n n$0=*&this:E* [line 33]\n _=*n$0:E [line 33]\n _fun_D_~D(n$0:E*) [line 33]\n _=*n$0:E [line 33]\n _fun_C_~C(n$0:E*) [line 33]\n _=*n$0:E [line 33]\n _fun_B_~B(n$0:E*) [line 33]\n " shape="box"]
|
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_3" [label="3: Destruction \n n$0=*&this:E* [line 38]\n _=*n$0:E [line 38]\n _fun_E___infer_inner_destructor_~E(n$0:E*) [line 38]\n _=*n$0:E [line 38]\n _fun_A___infer_inner_destructor_~A(n$0:E*) [line 38]\n _=*n$0:E [line 38]\n _fun_T___infer_inner_destructor_~T(n$0:E*) [line 38]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_3" -> "~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_2" ;
|
"~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_3" -> "~E#E#(_ZN1ED0Ev).44fb1076af1709dabd7a40484ef7ca13_2" ;
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_1" [label="1: Start F_F\nFormals: this:F*\nLocals: \n DECLARE_LOCALS(&return); [line 42]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_1" -> "F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_7" ;
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_2" [label="2: Exit F_F \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_3" [label="3: Constructor Init \n n$0=*&this:F* [line 42]\n _fun_D_D(n$0:F*) [line 42]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_3" -> "F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_2" ;
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_4" [label="4: Constructor Init \n n$1=*&this:F* [line 42]\n _fun_B_B(n$1:F*) [line 42]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_4" -> "F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_3" ;
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_5" [label="5: Constructor Init \n n$2=*&this:F* [line 42]\n _fun_C_C(n$2:F*) [line 42]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_5" -> "F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_4" ;
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_6" [label="6: Constructor Init \n n$3=*&this:F* [line 42]\n _fun_A_A(n$3:F*) [line 42]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_6" -> "F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_5" ;
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_7" [label="7: Constructor Init \n n$4=*&this:F* [line 42]\n _fun_T_T(n$4:F*) [line 42]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_7" -> "F#F#{_ZN1FC1Ev}.02883af06694002d810188a2463493b7_6" ;
|
||||||
|
"__infer_inner_destructor_~F#F#(_ZN1FD0Ev).5a82575ee7db3a505ae3cb2a1a80ad66_1" [label="1: Start F___infer_inner_destructor_~F\nFormals: this:F*\nLocals: \n DECLARE_LOCALS(&return); [line 43]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~F#F#(_ZN1FD0Ev).5a82575ee7db3a505ae3cb2a1a80ad66_1" -> "__infer_inner_destructor_~F#F#(_ZN1FD0Ev).5a82575ee7db3a505ae3cb2a1a80ad66_3" ;
|
||||||
|
"__infer_inner_destructor_~F#F#(_ZN1FD0Ev).5a82575ee7db3a505ae3cb2a1a80ad66_2" [label="2: Exit F___infer_inner_destructor_~F \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~F#F#(_ZN1FD0Ev).5a82575ee7db3a505ae3cb2a1a80ad66_3" [label="3: Destruction \n n$0=*&this:F* [line 43]\n _=*n$0:F [line 43]\n _fun_D___infer_inner_destructor_~D(n$0:F*) [line 43]\n _=*n$0:F [line 43]\n _fun_B___infer_inner_destructor_~B(n$0:F*) [line 43]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~F#F#(_ZN1FD0Ev).5a82575ee7db3a505ae3cb2a1a80ad66_3" -> "__infer_inner_destructor_~F#F#(_ZN1FD0Ev).5a82575ee7db3a505ae3cb2a1a80ad66_2" ;
|
||||||
|
"~F#F#(_ZN1FD0Ev).c4e45094cdc89c1a6c4112ae45286ef9_1" [label="1: Start F_~F\nFormals: this:F*\nLocals: \n DECLARE_LOCALS(&return); [line 43]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~F#F#(_ZN1FD0Ev).c4e45094cdc89c1a6c4112ae45286ef9_1" -> "~F#F#(_ZN1FD0Ev).c4e45094cdc89c1a6c4112ae45286ef9_3" ;
|
||||||
|
"~F#F#(_ZN1FD0Ev).c4e45094cdc89c1a6c4112ae45286ef9_2" [label="2: Exit F_~F \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~F#F#(_ZN1FD0Ev).c4e45094cdc89c1a6c4112ae45286ef9_3" [label="3: Destruction \n n$0=*&this:F* [line 43]\n _=*n$0:F [line 43]\n _fun_F___infer_inner_destructor_~F(n$0:F*) [line 43]\n _=*n$0:F [line 43]\n _fun_C___infer_inner_destructor_~C(n$0:F*) [line 43]\n _=*n$0:F [line 43]\n _fun_A___infer_inner_destructor_~A(n$0:F*) [line 43]\n _=*n$0:F [line 43]\n _fun_T___infer_inner_destructor_~T(n$0:F*) [line 43]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"~F#F#(_ZN1FD0Ev).c4e45094cdc89c1a6c4112ae45286ef9_3" -> "~F#F#(_ZN1FD0Ev).c4e45094cdc89c1a6c4112ae45286ef9_2" ;
|
||||||
|
"T#T#{_ZN1TC1Ev}.e96b2e7fa5f7843a391c757eaa263383_1" [label="1: Start T_T\nFormals: this:T*\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"T#T#{_ZN1TC1Ev}.e96b2e7fa5f7843a391c757eaa263383_1" -> "T#T#{_ZN1TC1Ev}.e96b2e7fa5f7843a391c757eaa263383_2" ;
|
||||||
|
"T#T#{_ZN1TC1Ev}.e96b2e7fa5f7843a391c757eaa263383_2" [label="2: Exit T_T \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~T#T#(_ZN1TD0Ev).389742d463c8e82b53ba61267847ccd1_1" [label="1: Start T___infer_inner_destructor_~T\nFormals: this:T*\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"__infer_inner_destructor_~T#T#(_ZN1TD0Ev).389742d463c8e82b53ba61267847ccd1_1" -> "__infer_inner_destructor_~T#T#(_ZN1TD0Ev).389742d463c8e82b53ba61267847ccd1_2" ;
|
||||||
|
"__infer_inner_destructor_~T#T#(_ZN1TD0Ev).389742d463c8e82b53ba61267847ccd1_2" [label="2: Exit T___infer_inner_destructor_~T \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~T#T#(_ZN1TD0Ev).64090d9695f68bd8a9808c8833d7a0d1_1" [label="1: Start T_~T\nFormals: this:T*\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~T#T#(_ZN1TD0Ev).64090d9695f68bd8a9808c8833d7a0d1_1" -> "~T#T#(_ZN1TD0Ev).64090d9695f68bd8a9808c8833d7a0d1_3" ;
|
||||||
|
"~T#T#(_ZN1TD0Ev).64090d9695f68bd8a9808c8833d7a0d1_2" [label="2: Exit T_~T \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
"~T#T#(_ZN1TD0Ev).64090d9695f68bd8a9808c8833d7a0d1_3" [label="3: Destruction \n n$0=*&this:T* [line 12]\n _=*n$0:T [line 12]\n _fun_T___infer_inner_destructor_~T(n$0:T*) [line 12]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
"~T#T#(_ZN1TD0Ev).64090d9695f68bd8a9808c8833d7a0d1_3" -> "~T#T#(_ZN1TD0Ev).64090d9695f68bd8a9808c8833d7a0d1_2" ;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue