IPA function summary for TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 inlinable global time: 15.000000 self size: 7 global size: 7 min size: 6 self stack: 12 global stack: 12 size:0.000000, time:0.000000 size:3.000000, time:2.000000, executed if:(not inlined) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 0] changed) && (not inlined) size:0.500000, time:0.500000, nonconst if:(op0[ref offset: 0] changed) calls: ReportClockErrors/8 function body not available loop depth: 0 freq:1.00 size: 3 time: 12 op0 is compile time invariant IPA function summary for TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 inlinable global time: 79.580059 self size: 32 global size: 32 min size: 0 self stack: 12 global stack: 12 size:2.000000, time:2.000000 size:3.000000, time:2.000000, executed if:(not inlined) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 0] changed) && (not inlined) size:0.500000, time:0.500000, nonconst if:(op0[ref offset: 0] changed) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 8] changed) && (not inlined) size:2.500000, time:2.500000, nonconst if:(op0[ref offset: 8] changed) size:11.000000, time:22.574499, executed if:(op0[ref offset: 8] != 0) array index:(op0[ref offset: 0] changed) calls: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 function not considered for inlining loop depth: 0 freq:0.11 size: 2 time: 11callee size: 3 stack:12 predicate: (op0[ref offset: 8] != 0) ClockTimeoutExpired/7 function body not available loop depth: 1 freq:3.08 size: 5 time: 14 predicate: (op0[ref offset: 8] != 0) op0 is compile time invariant op1 is compile time invariant ClockStartTimeout/6 function body not available loop depth: 0 freq:0.33 size: 5 time: 14 predicate: (op0[ref offset: 8] != 0) op0 is compile time invariant op1 is compile time invariant op2 is compile time invariant op3 is compile time invariant IPA function summary for ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 inlinable global time: 11.000000 self size: 15 global size: 15 min size: 0 self stack: 0 global stack: 0 size:2.000000, time:2.000000 size:3.000000, time:2.000000, executed if:(not inlined) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 0] changed) && (not inlined) size:0.500000, time:0.500000, nonconst if:(op0[ref offset: 0] changed) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 8] changed) && (not inlined) size:2.500000, time:2.500000, nonconst if:(op0[ref offset: 8] changed) size:4.000000, time:2.000000, executed if:(op0[ref offset: 8] == 0) size:2.000000, time:1.000000, executed if:(op0[ref offset: 8] != 0) array index:(op0[ref offset: 0] changed) calls: IPA function summary for Callback_DividerTriggerEmpty/1 inlinable global time: 2.000000 self size: 3 global size: 3 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:3.000000, time:2.000000, executed if:(not inlined) calls: Flattening functions: Overall time estimate: 107.580059 weighted by profile: 0.000000 Deciding on inlining of small functions. Starting with size 0. Enqueueing calls in TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9. Enqueueing calls in TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3. Enqueueing calls in ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2. Enqueueing calls in Callback_DividerTriggerEmpty/1. Considering TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 with 7 size to be inlined into TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 in unknown:0 Estimated badness is -0.086479, frequency 0.11. Reclaiming functions: Reclaiming variables: Clearing address taken flags: Deciding on functions to be inlined into all callers and removing useless speculations: Overall time estimate: 92.743409 weighted by profile: 0.000000 Why inlining failed? function body not available : 3 calls, 3.523733 freq, 0 count IPA function summary for TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 inlinable global time: 79.743409 self size: 32 global size: 34 min size: 0 self stack: 12 global stack: 24 size:2.000000, time:2.000000 size:3.000000, time:2.000000, executed if:(not inlined) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 0] changed) && (not inlined) size:0.500000, time:0.500000, nonconst if:(op0[ref offset: 0] changed) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 8] changed) && (not inlined) size:2.500000, time:2.500000, nonconst if:(op0[ref offset: 8] changed) size:11.500000, time:22.628949, executed if:(op0[ref offset: 8] != 0) array index:(op0[ref offset: 0] changed) calls: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 inlined loop depth: 0 freq:0.11 size: 2 time: 11callee size: 3 stack:12 Stack frame offset 12, callee self size 12, callee size 12 ReportClockErrors/8 function body not available loop depth: 0 freq:0.11 size: 3 time: 12 predicate: (op0[ref offset: 8] != 0) op0 is compile time invariant ClockTimeoutExpired/7 function body not available loop depth: 1 freq:3.08 size: 5 time: 14 predicate: (op0[ref offset: 8] != 0) op0 is compile time invariant op1 is compile time invariant ClockStartTimeout/6 function body not available loop depth: 0 freq:0.33 size: 5 time: 14 predicate: (op0[ref offset: 8] != 0) op0 is compile time invariant op1 is compile time invariant op2 is compile time invariant op3 is compile time invariant IPA function summary for ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 inlinable global time: 11.000000 self size: 15 global size: 15 min size: 0 self stack: 0 global stack: 0 size:2.000000, time:2.000000 size:3.000000, time:2.000000, executed if:(not inlined) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 0] changed) && (not inlined) size:0.500000, time:0.500000, nonconst if:(op0[ref offset: 0] changed) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 8] changed) && (not inlined) size:2.500000, time:2.500000, nonconst if:(op0[ref offset: 8] changed) size:4.000000, time:2.000000, executed if:(op0[ref offset: 8] == 0) size:2.000000, time:1.000000, executed if:(op0[ref offset: 8] != 0) array index:(op0[ref offset: 0] changed) calls: IPA function summary for Callback_DividerTriggerEmpty/1 inlinable global time: 2.000000 self size: 3 global size: 3 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:3.000000, time:2.000000, executed if:(not inlined) calls: Symbol table: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 (TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0) @061888c0 Type: function definition analyzed Visibility: prevailing_def_ironly artificial References: Referring: Function TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 is inline copy in TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 Availability: local Function flags: count:37904965 (estimated locally) first_run:1 body local split_part optimize_size Called by: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (inlined) (37904965 (estimated locally),0.11 per call) Calls: ReportClockErrors/8 (37904965 (estimated locally),0.11 per call) ReportClockErrors/8 (ReportClockErrors) @06182540 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 (37904965 (estimated locally),0.11 per call) Calls: ClockTimeoutExpired/7 (ClockTimeoutExpired) @06182460 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (1073741824 (estimated locally),3.08 per call) Calls: ClockStartTimeout/6 (ClockStartTimeout) @06182380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (114863532 (estimated locally),0.33 per call) Calls: cgm/5 (cgm) @06184168 Type: variable Body removed by symtab_remove_unreachable_nodes Visibility: external public References: Referring: ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 (read)ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 (read)TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (read) Availability: not_available Varpool flags: read-only clockFeatures/4 (clockFeatures) @06184120 Type: variable Body removed by symtab_remove_unreachable_nodes Visibility: external public References: Referring: ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 (read)ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 (read)TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (read)TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (read) Availability: not_available Varpool flags: read-only TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat) @0606fee0 Type: function definition analyzed Visibility: prevailing_def_ironly Address is taken. References: clockFeatures/4 (read)clockFeatures/4 (read)cgm/5 (read) Referring: dividerTriggerCallbacks/0 (addr) Availability: available Function flags: count:348071309 (estimated locally) body optimize_size Called by: Calls: TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat.part.0/9 (inlined) (37904965 (estimated locally),0.11 per call) ClockTimeoutExpired/7 (1073741824 (estimated locally),3.08 per call) ClockStartTimeout/6 (114863532 (estimated locally),0.33 per call) ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 (ConfigureCgmXDivTrigCtrlTctlHhenUpdStat) @0606fe00 Type: function definition analyzed Visibility: prevailing_def_ironly Address is taken. References: clockFeatures/4 (read)clockFeatures/4 (read)cgm/5 (read)cgm/5 (read) Referring: dividerTriggerCallbacks/0 (addr) Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: Callback_DividerTriggerEmpty/1 (Callback_DividerTriggerEmpty) @0606fb60 Type: function definition analyzed Visibility: prevailing_def_ironly Address is taken. References: Referring: dividerTriggerCallbacks/0 (addr)dividerTriggerCallbacks/0 (addr) Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: dividerTriggerCallbacks/0 (dividerTriggerCallbacks) @06069990 Type: variable definition analyzed Visibility: externally_visible public References: Callback_DividerTriggerEmpty/1 (addr)Callback_DividerTriggerEmpty/1 (addr)ConfigureCgmXDivTrigCtrlTctlHhenUpdStat/2 (addr)TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat/3 (addr) Referring: Availability: available Varpool flags: initialized read-only const-value-known ;; Function Callback_DividerTriggerEmpty (Callback_DividerTriggerEmpty, funcdef_no=0, decl_uid=5054, cgraph_uid=1, symbol_order=1) Callback_DividerTriggerEmpty (const struct Clock_Ip_DividerTriggerConfigType * config) { [local count: 1073741824]: # DEBUG BEGIN_STMT return; } ;; Function ConfigureCgmXDivTrigCtrlTctlHhenUpdStat (ConfigureCgmXDivTrigCtrlTctlHhenUpdStat, funcdef_no=1, decl_uid=5056, cgraph_uid=2, symbol_order=2) ConfigureCgmXDivTrigCtrlTctlHhenUpdStat (const struct Clock_Ip_DividerTriggerConfigType * config) { uint32 selectorIndex; uint32 instance; _1; int _2; unsigned char _3; unsigned char _4; _5; volatile struct cgmMux_Type * _6; volatile struct cgmMux_Type * _7; long unsigned int _8; long unsigned int _9; [local count: 1073741824]: # DEBUG BEGIN_STMT _1 = config_12(D)->name; _2 = (int) _1; _3 = clockFeatures[_2][0]; instance_13 = (uint32) _3; # DEBUG instance => instance_13 # DEBUG BEGIN_STMT _4 = clockFeatures[_2][2]; selectorIndex_14 = (uint32) _4; # DEBUG selectorIndex => selectorIndex_14 # DEBUG BEGIN_STMT _5 = config_12(D)->triggerType; if (_5 != 0) goto ; [50.00%] else goto ; [50.00%] [local count: 536870913]: # DEBUG BEGIN_STMT _6 = cgm[instance_13][selectorIndex_14]; _6->MUX_DIV_TRIG_CTRL ={v} 1; goto ; [100.00%] [local count: 536870913]: # DEBUG BEGIN_STMT _7 = cgm[instance_13][selectorIndex_14]; _8 ={v} _7->MUX_DIV_TRIG_CTRL; _9 = _8 & 4294967294; _7->MUX_DIV_TRIG_CTRL ={v} _9; [local count: 1073741824]: return; } ;; Function TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat (TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat, funcdef_no=2, decl_uid=5058, cgraph_uid=3, symbol_order=3) Symbols to be put in SSA form { D.5094 } Incremental SSA update started at block: 0 Number of blocks in CFG: 14 Number of blocks to update: 13 ( 93%) Removing basic block 7 Removing basic block 9 Removing basic block 10 Removing basic block 11 Merging blocks 12 and 13 No longer having address taken: StartTime No longer having address taken: ElapsedTime No longer having address taken: TimeoutTicks Symbols to be put in SSA form { D.5117 D.5118 D.5119 } Incremental SSA update started at block: 0 Number of blocks in CFG: 9 Number of blocks to update: 8 ( 89%) ;; 2 loops found ;; ;; Loop 0 ;; header 0, latch 1 ;; depth 0, outer -1 ;; nodes: 0 1 2 3 4 5 6 7 8 ;; ;; Loop 1 ;; header 4, latch 5 ;; depth 1, outer 0 ;; nodes: 4 5 ;; 2 succs { 3 8 } ;; 3 succs { 4 } ;; 4 succs { 5 6 } ;; 5 succs { 4 6 } ;; 6 succs { 7 8 } ;; 7 succs { 8 } ;; 8 succs { 1 } TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat (const struct Clock_Ip_DividerTriggerConfigType * config) { uint32 DividerStatus; uint32 TimeoutTicks; uint32 ElapsedTime; uint32 StartTime; boolean TimeoutOccurred; uint32 selectorIndex; uint32 instance; _1; int _2; unsigned char _3; unsigned char _6; _7; volatile struct cgmMux_Type * _8; long unsigned int _9; long unsigned int TimeoutTicks.0_10; _25; [local count: 348071309]: # DEBUG BEGIN_STMT _1 = config_14(D)->name; _2 = (int) _1; _3 = clockFeatures[_2][0]; instance_15 = (uint32) _3; # DEBUG instance => instance_15 # DEBUG BEGIN_STMT _6 = clockFeatures[_2][2]; selectorIndex_16 = (uint32) _6; # DEBUG selectorIndex => selectorIndex_16 # DEBUG BEGIN_STMT # DEBUG TimeoutOccurred => 0 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _7 = config_14(D)->triggerType; if (_7 != 0) goto ; [33.00%] else goto ; [67.00%] [local count: 114863532]: # DEBUG BEGIN_STMT _8 = cgm[instance_15][selectorIndex_16]; _8->MUX_DIV_TRIG ={v} 1; # DEBUG BEGIN_STMT ClockStartTimeout (&StartTime, &ElapsedTime, &TimeoutTicks, 10000); [local count: 1073741824]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _9 ={v} _8->MUX_DIV_UPD_STAT; DividerStatus_19 = _9 & 1; # DEBUG DividerStatus => DividerStatus_19 # DEBUG BEGIN_STMT TimeoutTicks.0_10 = TimeoutTicks; TimeoutOccurred_21 = ClockTimeoutExpired (&StartTime, &ElapsedTime, TimeoutTicks.0_10); # DEBUG TimeoutOccurred => TimeoutOccurred_21 # DEBUG BEGIN_STMT if (DividerStatus_19 != 0) goto ; [94.50%] else goto ; [5.50%] [local count: 1014686025]: if (TimeoutOccurred_21 != 0) goto ; [5.50%] else goto ; [94.50%] [local count: 114863532]: # TimeoutOccurred_4 = PHI # DEBUG BEGIN_STMT if (TimeoutOccurred_4 != 0) goto ; [33.00%] else goto ; [67.00%] [local count: 37904965]: # DEBUG config => config_14(D) # DEBUG INLINE_ENTRY TriggerUpdateCgmXDivTrigCtrlTctlHhenUpdStat # DEBUG BEGIN_STMT _25 = config_14(D)->name; ReportClockErrors (1, _25); # DEBUG D#1 => {CLOBBER} # DEBUG StartTime => D#1 # DEBUG D#2 => {CLOBBER} # DEBUG ElapsedTime => D#2 # DEBUG D#3 => {CLOBBER} # DEBUG TimeoutTicks => D#3 [local count: 348071309]: # DEBUG config => NULL # DEBUG instance => NULL # DEBUG selectorIndex => NULL # DEBUG TimeoutOccurred => NULL # DEBUG StartTime => NULL # DEBUG ElapsedTime => NULL # DEBUG TimeoutTicks => NULL # DEBUG DividerStatus => NULL StartTime ={v} {CLOBBER}; ElapsedTime ={v} {CLOBBER}; TimeoutTicks ={v} {CLOBBER}; return; }