IPA structures before propagation: Function parameters: function foo/6 parameter descriptors: param #0 used undescribed_use function main/3 parameter descriptors: function bar2/1 parameter descriptors: param #0 used undescribed_use function bar/0 parameter descriptors: param #0 used undescribed_use Jump functions: Jump functions of caller __builtin_puts/7: Jump functions of caller foo/6: callsite foo/6 -> __builtin_puts/7 : param 0: CONST: &"test"[0] Alignment: 1, misalignment: 0 Jump functions of caller main/3: callsite main/3 -> foo/6 : param 0: CONST: 0 Unknown alignment callsite main/3 -> foo/6 : param 0: CONST: 2 Unknown alignment callsite main/3 -> foo/6 : param 0: CONST: 0 Unknown alignment callsite main/3 -> foo/6 : param 0: CONST: 1 Unknown alignment Jump functions of caller bar2/1: callsite bar2/1 -> foo/6 : param 0: UNKNOWN Unknown alignment Jump functions of caller bar/0: callsite bar/0 -> foo/6 : param 0: UNKNOWN Unknown alignment Propagating constants: Not considering foo for cloning; -fipa-cp-clone disabled. Marking all lattices of foo/6 as BOTTOM Not considering main for cloning; -fipa-cp-clone disabled. Marking all lattices of main/3 as BOTTOM Not considering bar2 for cloning; -fipa-cp-clone disabled. Marking all lattices of bar2/1 as BOTTOM Not considering bar for cloning; -fipa-cp-clone disabled. Marking all lattices of bar/0 as BOTTOM overall_size: 34, max_new_size: 11001 Estimating effects for bar2/1, base_time: 14. Estimating effects for bar/0, base_time: 14. Meeting [0, 2] and [0, 1] to [0, 2] Estimating effects for foo/6, base_time: 6. IPA lattices after all propagation: Lattices: Node: foo/6: param [0]: BOTTOM ctxs: BOTTOM Alignment unusable (BOTTOM) [0, 2] AGGS BOTTOM Node: main/3: Node: bar2/1: param [0]: BOTTOM ctxs: BOTTOM Alignment unusable (BOTTOM) UNDEFINED AGGS BOTTOM Node: bar/0: param [0]: BOTTOM ctxs: BOTTOM Alignment unusable (BOTTOM) UNDEFINED AGGS BOTTOM IPA decision stage: Evaluating opportunities for bar2/1. Evaluating opportunities for bar/0. Evaluating opportunities for foo/6. IPA constant propagation end Reclaiming functions: Reclaiming variables: Clearing address taken flags: Symbol table: puts/7 (__builtin_puts) @0x7ffa9ff50730 Type: function Visibility: external public References: Referring: Availability: not_available First run: 0 Function flags: Called by: foo/6 (0.19 per call) Calls: foo/6 (foo) @0x7ffa9ff505c0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Read from file: t1.o Availability: available First run: 0 Function flags: Called by: bar/0 (1.00 per call) bar2/1 (1.00 per call) main/3 (1.00 per call) main/3 (1.00 per call) main/3 (1.00 per call) main/3 (1.00 per call) Calls: puts/7 (0.19 per call) x/2 (x) @0x7ffa9ff51000 Type: variable definition analyzed Visibility: externally_visible public common References: Referring: main/3 (write)main/3 (write)main/3 (write)main/3 (write) Read from file: t2.o Availability: overwritable Varpool flags: main/3 (main) @0x7ffa9ff502e0 Type: function definition analyzed Visibility: externally_visible public References: x/2 (write)x/2 (write)x/2 (write)x/2 (write) Referring: Read from file: t2.o Availability: available First run: 0 Function flags: only_called_at_startup executed_once only_called_at_startup Called by: Calls: foo/6 (1.00 per call) foo/6 (1.00 per call) foo/6 (1.00 per call) foo/6 (1.00 per call) bar2/1 (bar2) @0x7ffa9ff50170 Type: function definition analyzed Visibility: externally_visible public References: Referring: Read from file: t2.o Availability: available First run: 0 Function flags: Called by: Calls: foo/6 (1.00 per call) bar/0 (bar) @0x7ffa9ff50000 Type: function definition analyzed Visibility: externally_visible public References: Referring: Read from file: t2.o Availability: available First run: 0 Function flags: Called by: Calls: foo/6 (1.00 per call) ;; Function foo (foo, funcdef_no=0, decl_uid=3890, cgraph_uid=4, symbol_order=6) Modification phase of node foo/6 Setting value range of param 0 [0,2] __attribute__((noinline)) foo (int i) { unsigned int _3; : _3 = (unsigned int) i_2(D); if (_3 > 1) goto ; else goto ; : __builtin_puts (&"test"[0]); : return; } ;; Function main (main, funcdef_no=1, decl_uid=3884, cgraph_uid=2, symbol_order=3) (executed once) Modification phase of node main/3 main () { : x = 0; foo (1); x = 1; foo (0); x = 3; foo (2); x = 5; foo (0); return 0; } ;; Function bar2 (bar2, funcdef_no=2, decl_uid=3883, cgraph_uid=1, symbol_order=1) Modification phase of node bar2/1 bar2 (long unsigned int l) { int _2; int _3; : _2 = (int) l_1(D); _3 = _2 & 2; foo (_3); return; } ;; Function bar (bar, funcdef_no=3, decl_uid=3882, cgraph_uid=0, symbol_order=0) Modification phase of node bar/0 bar (long unsigned int l) { _Bool _2; int _3; : _2 = l_1(D) == 0; _3 = (int) _2; foo (_3); return; }