local analysis of Lin_Ip_MakeChecksumByte scanning: if (u8Pid_12(D) != 60) scanning: if (u8Pid_12(D) != 125) scanning: if (u8Pid_12(D) != 254) scanning: if (u8Pid_12(D) != 191) scanning: checksum_13 = (uint16) u8Pid_12(D); scanning: _1 = (sizetype) length_7; scanning: _2 = pBuffer_17(D) + _1; scanning: _3 = *_2; Indirect ref read is not const scanning: _4 = (short unsigned int) _3; scanning: checksum_18 = _4 + checksum_10; scanning: if (checksum_18 > 255) scanning: checksum_19 = checksum_18 + 65281; scanning: length_20 = length_7 + 1; scanning: if (length_7 < u8SizeBuffer_14(D)) scanning: _6 = (unsigned char) checksum_5; scanning: _15 = ~_6; scanning: return _15; ;; 2 loops found ;; ;; Loop 0 ;; header 0, latch 1 ;; depth 0, outer -1 ;; nodes: 0 1 2 3 4 5 6 11 8 9 10 13 12 ;; ;; Loop 1 ;; header 13, latch 10 ;; depth 1, outer 0 ;; nodes: 13 10 8 9 ;; 2 succs { 3 11 } ;; 3 succs { 4 11 } ;; 4 succs { 5 11 } ;; 5 succs { 6 11 } ;; 6 succs { 11 } ;; 11 succs { 13 } ;; 8 succs { 9 10 } ;; 9 succs { 10 } ;; 10 succs { 13 } ;; 13 succs { 8 12 } ;; 12 succs { 1 } Function is locally pure. local analysis of Lin_Ip_ProcessParity scanning: u8CalPid_6 = u8Pid_5(D) & 63; scanning: _27 = (int) u8Pid_5(D); scanning: _25 = _27 >> 1; scanning: _26 = (unsigned char) _25; scanning: _7 = u8Pid_5(D) ^ _26; scanning: _22 = _27 >> 2; scanning: _23 = (unsigned char) _22; scanning: _28 = _7 ^ _23; scanning: _19 = _27 >> 4; scanning: _20 = (unsigned char) _19; scanning: _24 = _20 ^ _28; scanning: _21 = _24 << 6; scanning: _1 = _21 & 64; scanning: _15 = _27 >> 3; scanning: _16 = (unsigned char) _15; scanning: _18 = _16 ^ _26; scanning: _17 = _18 ^ _20; scanning: _10 = _27 >> 5; scanning: _9 = (unsigned char) _10; scanning: _14 = _9 ^ _17; scanning: _2 = _14 & 1; scanning: if (_2 == 0) scanning: _11 = _1 | iftmp.0_4; scanning: u8CalPid_12 = u8CalPid_6 | _11; scanning: if (eTypeAction_13(D) == 0) scanning: if (u8Pid_5(D) != u8CalPid_12) scanning: if (eTypeAction_13(D) == 1) scanning: return retVal_3; Function is locally const. callgraph: Lin_Ip_MakeChecksumByte/2 (Lin_Ip_MakeChecksumByte) @06a25e00 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3d18 References: Referring: Availability: available Function flags: count:118111600 (estimated locally) body optimize_size Called by: Calls: Lin_Ip_ProcessParity/1 (Lin_Ip_ProcessParity) @06a25b60 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3fb8 References: Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: ordered call graph: reduced for nothrow Lin_Ip_MakeChecksumByte/2 (Lin_Ip_MakeChecksumByte) @06a25e00 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3d18 References: Referring: Availability: available Function flags: count:118111600 (estimated locally) body optimize_size Called by: Calls: Lin_Ip_ProcessParity/1 (Lin_Ip_ProcessParity) @06a25b60 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3fb8 References: Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: MALLOC LATTICE Initial: Lin_Ip_MakeChecksumByte: malloc_bottom Lin_Ip_ProcessParity: malloc_bottom MALLOC LATTICE after propagation: Lin_Ip_MakeChecksumByte: malloc_bottom Lin_Ip_ProcessParity: malloc_bottom callgraph: Lin_Ip_MakeChecksumByte/2 (Lin_Ip_MakeChecksumByte) @06a25e00 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3e38 References: Referring: Availability: available Function flags: count:118111600 (estimated locally) body optimize_size Called by: Calls: Lin_Ip_ProcessParity/1 (Lin_Ip_ProcessParity) @06a25b60 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3d78 References: Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: ordered call graph: reduced Lin_Ip_MakeChecksumByte/2 (Lin_Ip_MakeChecksumByte) @06a25e00 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3e38 References: Referring: Availability: available Function flags: count:118111600 (estimated locally) body optimize_size Called by: Calls: Lin_Ip_ProcessParity/1 (Lin_Ip_ProcessParity) @06a25b60 Type: function definition analyzed Visibility: externally_visible public Aux: @063c3d78 References: Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: Function found not to call free: Lin_Ip_ProcessParity Function found not to call free: Lin_Ip_MakeChecksumByte Lin_Ip_MakeChecksumByte (const uint8 * pBuffer, const uint8 u8SizeBuffer, const uint8 u8Pid) { uint16 checksum; uint8 length; sizetype _1; const uint8 * _2; unsigned char _3; short unsigned int _4; unsigned char _6; uint8 _15; [local count: 118111600]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG checksum => 0 # DEBUG BEGIN_STMT if (u8Pid_12(D) != 60) goto ; [66.00%] else goto ; [34.00%] [local count: 77953656]: if (u8Pid_12(D) != 125) goto ; [66.00%] else goto ; [34.00%] [local count: 51449413]: if (u8Pid_12(D) != 254) goto ; [66.00%] else goto ; [34.00%] [local count: 33956613]: if (u8Pid_12(D) != 191) goto ; [66.00%] else goto ; [34.00%] [local count: 22411364]: # DEBUG BEGIN_STMT checksum_13 = (uint16) u8Pid_12(D); # DEBUG checksum => checksum_13 [local count: 118111600]: # length_8 = PHI <0(3), 0(2), 0(6), 0(4), 0(5)> # checksum_11 = PHI <0(3), 0(2), checksum_13(6), 0(4), 0(5)> goto ; [100.00%] [local count: 955630224]: # DEBUG BEGIN_STMT _1 = (sizetype) length_7; _2 = pBuffer_17(D) + _1; _3 = *_2; _4 = (short unsigned int) _3; checksum_18 = _4 + checksum_10; # DEBUG checksum => checksum_18 # DEBUG BEGIN_STMT if (checksum_18 > 255) goto ; [50.00%] else goto ; [50.00%] [local count: 477815112]: # DEBUG BEGIN_STMT checksum_19 = checksum_18 + 65281; # DEBUG checksum => checksum_19 [local count: 955630224]: # checksum_9 = PHI # DEBUG checksum => checksum_9 # DEBUG BEGIN_STMT length_20 = length_7 + 1; # DEBUG length => length_20 [local count: 1073741824]: # length_7 = PHI # checksum_10 = PHI # DEBUG checksum => checksum_10 # DEBUG length => length_7 # DEBUG BEGIN_STMT if (length_7 < u8SizeBuffer_14(D)) goto ; [89.00%] else goto ; [11.00%] [local count: 118111601]: # checksum_5 = PHI # DEBUG BEGIN_STMT _6 = (unsigned char) checksum_5; _15 = ~_6; return _15; } Lin_Ip_ProcessParity (const uint8 u8Pid, const Lin_Ip_ParityActionType eTypeAction) { uint8 retVal; uint8 u8CalPid; unsigned char _1; unsigned char _2; unsigned char iftmp.0_4; unsigned char _7; unsigned char _9; int _10; unsigned char _11; unsigned char _14; int _15; unsigned char _16; unsigned char _17; unsigned char _18; int _19; unsigned char _20; unsigned char _21; int _22; unsigned char _23; unsigned char _24; int _25; unsigned char _26; int _27; unsigned char _28; [local count: 1073741824]: # DEBUG BEGIN_STMT u8CalPid_6 = u8Pid_5(D) & 63; # DEBUG u8CalPid => u8CalPid_6 # DEBUG BEGIN_STMT # DEBUG retVal => 255 # DEBUG BEGIN_STMT # DEBUG A => u8Pid_5(D) # DEBUG B => 0 # DEBUG INLINE_ENTRY BIT # DEBUG BEGIN_STMT _27 = (int) u8Pid_5(D); # DEBUG A => NULL # DEBUG B => NULL # DEBUG A => u8Pid_5(D) # DEBUG B => 1 # DEBUG INLINE_ENTRY BIT # DEBUG BEGIN_STMT _25 = _27 >> 1; _26 = (unsigned char) _25; # DEBUG A => NULL # DEBUG B => NULL _7 = u8Pid_5(D) ^ _26; # DEBUG A => u8Pid_5(D) # DEBUG B => 2 # DEBUG INLINE_ENTRY BIT # DEBUG BEGIN_STMT _22 = _27 >> 2; _23 = (unsigned char) _22; # DEBUG A => NULL # DEBUG B => NULL _28 = _7 ^ _23; # DEBUG A => u8Pid_5(D) # DEBUG B => 4 # DEBUG INLINE_ENTRY BIT # DEBUG BEGIN_STMT _19 = _27 >> 4; _20 = (unsigned char) _19; # DEBUG A => NULL # DEBUG B => NULL _24 = _20 ^ _28; _21 = _24 << 6; _1 = _21 & 64; # DEBUG A => u8Pid_5(D) # DEBUG B => 1 # DEBUG INLINE_ENTRY NULL # DEBUG BEGIN_STMT # DEBUG A => NULL # DEBUG B => NULL # DEBUG A => u8Pid_5(D) # DEBUG B => 3 # DEBUG INLINE_ENTRY BIT # DEBUG BEGIN_STMT _15 = _27 >> 3; _16 = (unsigned char) _15; # DEBUG A => NULL # DEBUG B => NULL _18 = _16 ^ _26; # DEBUG A => u8Pid_5(D) # DEBUG B => 4 # DEBUG INLINE_ENTRY NULL # DEBUG BEGIN_STMT # DEBUG A => NULL # DEBUG B => NULL _17 = _18 ^ _20; # DEBUG A => u8Pid_5(D) # DEBUG B => 5 # DEBUG INLINE_ENTRY BIT # DEBUG BEGIN_STMT _10 = _27 >> 5; _9 = (unsigned char) _10; # DEBUG A => NULL # DEBUG B => NULL _14 = _9 ^ _17; _2 = _14 & 1; if (_2 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 536870913]: [local count: 1073741824]: # iftmp.0_4 = PHI <128(2), 0(3)> _11 = _1 | iftmp.0_4; u8CalPid_12 = u8CalPid_6 | _11; # DEBUG u8CalPid => u8CalPid_12 # DEBUG BEGIN_STMT if (eTypeAction_13(D) == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 536870913]: # DEBUG BEGIN_STMT if (u8Pid_5(D) != u8CalPid_12) goto ; [51.11%] else goto ; [48.89%] [local count: 262476189]: # DEBUG BEGIN_STMT # DEBUG retVal => u8CalPid_6 goto ; [100.00%] [local count: 536870913]: # DEBUG BEGIN_STMT if (eTypeAction_13(D) == 1) goto ; [48.89%] else goto ; [51.11%] [local count: 262476189]: # DEBUG BEGIN_STMT # DEBUG retVal => u8CalPid_12 [local count: 1073741824]: # retVal_3 = PHI # DEBUG retVal => retVal_3 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT return retVal_3; }