
IPA constant propagation start:
Determining dynamic type for call: OutStr (&str);
  Starting walk at: OutStr (&str);
  instance pointer: &str  Outer instance pointer: str offset: 0 (bits) vtbl reference: 
  Function call may change dynamic type:vsprintf (&str, msg_3(D), argptr);
  Function call may change dynamic type:__builtin_va_start (&argptr, 0);

IPA structures before propagation:

Jump functions:
  Jump functions of caller  __builtin_va_end/40:
  Jump functions of caller  vsprintf/39:
  Jump functions of caller  __builtin_va_start/38:
  Jump functions of caller  Lpuart_Uart_Ip_SyncSend/37:
  Jump functions of caller  programDword_data_flash/36:
  Jump functions of caller  string_to_int/35:
  Jump functions of caller  put_charp/34:
    callsite  put_charp/34 -> OutDev0/30 : 
       param 0: CONST: 44
         value: 0x2c, mask: 0x0
         Unknown VR
    callsite  put_charp/34 -> OutDev0/30 : 
       param 0: UNKNOWN
         value: 0x0, mask: 0xff
         Unknown VR
    callsite  put_charp/34 -> D2C/29 : 
       param 0: PASS THROUGH: 0, op bit_and_expr 15
         value: 0x0, mask: 0xf
         VR  [0, 15]
    callsite  put_charp/34 -> OutDev0/30 : 
       param 0: UNKNOWN
         value: 0x0, mask: 0xff
         Unknown VR
    callsite  put_charp/34 -> D2C/29 : 
       param 0: PASS THROUGH: 0, op rshift_expr 4
         value: 0x0, mask: 0xf
         VR  [0, 15]
  Jump functions of caller  put_cr/33:
    callsite  put_cr/33 -> OutDev0/30 : 
       param 0: CONST: 10
         value: 0xa, mask: 0x0
         Unknown VR
    callsite  put_cr/33 -> OutDev0/30 : 
       param 0: CONST: 13
         value: 0xd, mask: 0x0
         Unknown VR
  Jump functions of caller  monprintf/32:
    callsite  monprintf/32 -> OutStr/31 : 
       param 0: UNKNOWN
         Aggregate passed by reference:
           offset: 2024, cst: 0
           offset: 2032, cst: 0
         value: 0x0, mask: 0xfffffffc
         VR  ~[0, 0]
  Jump functions of caller  OutStr/31:
    callsite  OutStr/31 -> OutDev0/30 : 
       param 0: UNKNOWN
         value: 0x0, mask: 0xff
         Unknown VR
  Jump functions of caller  OutDev0/30:
  Jump functions of caller  D2C/29:
  Jump functions of caller  delayN/28:

 Propagating constants:

Not considering programDword_data_flash for cloning; -fipa-cp-clone disabled.
Not considering string_to_int for cloning; -fipa-cp-clone disabled.
Not considering put_charp for cloning; -fipa-cp-clone disabled.
Not considering put_cr for cloning; -fipa-cp-clone disabled.
Not considering monprintf for cloning; -fipa-cp-clone disabled.
Not considering OutStr for cloning; -fipa-cp-clone disabled.
Not considering OutDev0 for cloning; -fipa-cp-clone disabled.
Not considering D2C for cloning; -fipa-cp-clone disabled.
Not considering delayN for cloning; -fipa-cp-clone disabled.

overall_size: 94, max_new_size: 11001
 - context independent values, size: 3, time_benefit: 2.000000
 - context independent values, size: 3, time_benefit: 1.000000

IPA lattices after all propagation:

Lattices:
  Node: programDword_data_flash/36:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
    param [1]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
  Node: string_to_int/35:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
  Node: put_charp/34:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
  Node: put_cr/33:
  Node: monprintf/32:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
  Node: OutStr/31:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
  Node: OutDev0/30:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
  Node: D2C/29:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM
  Node: delayN/28:
    param [0]: BOTTOM
         ctxs: BOTTOM
         Bits unusable (BOTTOM)
         VARYING
        AGGS BOTTOM

IPA decision stage:


IPA constant propagation end

Reclaiming functions:
Reclaiming variables:
Clearing address taken flags:
Symbol table:

__builtin_va_end/40 (__builtin_va_end) @073b51c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: monprintf/32 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
vsprintf/39 (vsprintf) @073b50e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: monprintf/32 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
__builtin_va_start/38 (__builtin_va_start) @073b5000
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: monprintf/32 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
Lpuart_Uart_Ip_SyncSend/37 (Lpuart_Uart_Ip_SyncSend) @06c8ad20
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: OutDev0/30 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
programDword_data_flash/36 (programDword_data_flash) @06c8a700
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: 
  Calls: 
string_to_int/35 (string_to_int) @06c8a460
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:118207164 (estimated locally) body optimize_size
  Called by: 
  Calls: 
put_charp/34 (put_charp) @06c8a1c0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: 
  Calls: OutDev0/30 (1073741824 (estimated locally),1.00 per call) OutDev0/30 (1073741824 (estimated locally),1.00 per call) D2C/29 (1073741824 (estimated locally),1.00 per call) OutDev0/30 (1073741824 (estimated locally),1.00 per call) D2C/29 (1073741824 (estimated locally),1.00 per call) 
put_cr/33 (put_cr) @06c86ee0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: 
  Calls: OutDev0/30 (1073741824 (estimated locally),1.00 per call) OutDev0/30 (1073741824 (estimated locally),1.00 per call) 
monprintf/32 (monprintf) @06c86700
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: 
  Calls: OutStr/31 (1073741824 (estimated locally),1.00 per call) __builtin_va_end/40 (1073741824 (estimated locally),1.00 per call) vsprintf/39 (1073741824 (estimated locally),1.00 per call) __builtin_va_start/38 (1073741824 (estimated locally),1.00 per call) 
OutStr/31 (OutStr) @06c86e00
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:118111600 (estimated locally) body optimize_size
  Called by: monprintf/32 (1073741824 (estimated locally),1.00 per call) 
  Calls: OutDev0/30 (955630223 (estimated locally),8.09 per call) 
OutDev0/30 (OutDev0) @06c86b60
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: put_charp/34 (1073741824 (estimated locally),1.00 per call) put_charp/34 (1073741824 (estimated locally),1.00 per call) put_charp/34 (1073741824 (estimated locally),1.00 per call) put_cr/33 (1073741824 (estimated locally),1.00 per call) put_cr/33 (1073741824 (estimated locally),1.00 per call) OutStr/31 (955630223 (estimated locally),8.09 per call) 
  Calls: Lpuart_Uart_Ip_SyncSend/37 (1073741824 (estimated locally),1.00 per call) 
D2C/29 (D2C) @06c868c0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: put_charp/34 (1073741824 (estimated locally),1.00 per call) put_charp/34 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
delayN/28 (delayN) @06c86620
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: 
  Calls: 

;; Function delayN (delayN, funcdef_no=28, decl_uid=5896, cgraph_uid=29, symbol_order=28)

Modification phase of node delayN/28
delayN (uint32_t n)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG n => NULL
  # DEBUG BEGIN_STMT
  return;

}



;; Function D2C (D2C, funcdef_no=29, decl_uid=5898, cgraph_uid=30, symbol_order=29)

Modification phase of node D2C/29
D2C (uint8_t c)
{
  uint8_t _1;
  uint8_t _3;
  uint8_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (c_2(D) <= 9)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  _4 = c_2(D) + 48;
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  _3 = c_2(D) + 55;

  <bb 5> [local count: 1073741824]:
  # _1 = PHI <_4(3), _3(4)>
  return _1;

}



;; Function OutDev0 (OutDev0, funcdef_no=30, decl_uid=5900, cgraph_uid=31, symbol_order=30)

Modification phase of node OutDev0/30
OutDev0 (char c)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  Lpuart_Uart_Ip_SyncSend (0, &c, 1);
  return;

}



;; Function OutStr (OutStr, funcdef_no=31, decl_uid=5902, cgraph_uid=32, symbol_order=31)

Modification phase of node OutStr/31
OutStr (const char * text)
{
  char _1;

  <bb 2> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  goto <bb 4>; [100.00%]

  <bb 3> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  text_6 = text_2 + 1;
  # DEBUG text => text_6
  OutDev0 (_1);

  <bb 4> [local count: 1073741824]:
  # text_2 = PHI <text_4(D)(2), text_6(3)>
  # DEBUG text => text_2
  # DEBUG BEGIN_STMT
  _1 = *text_2;
  if (_1 != 0)
    goto <bb 3>; [89.00%]
  else
    goto <bb 5>; [11.00%]

  <bb 5> [local count: 118111601]:
  return;

}



;; Function monprintf (monprintf, funcdef_no=32, decl_uid=5904, cgraph_uid=33, symbol_order=32)

Modification phase of node monprintf/32
monprintf (char * msg)
{
  struct va_list argptr;
  char str[256];

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  __builtin_va_start (&argptr, 0);
  # DEBUG BEGIN_STMT
  vsprintf (&str, msg_3(D), argptr);
  # DEBUG BEGIN_STMT
  __builtin_va_end (&argptr);
  # DEBUG BEGIN_STMT
  str[253] = 0;
  # DEBUG BEGIN_STMT
  str[254] = 0;
  # DEBUG BEGIN_STMT
  OutStr (&str);
  str ={v} {CLOBBER};
  argptr ={v} {CLOBBER};
  return;

}



;; Function put_cr (put_cr, funcdef_no=33, decl_uid=6619, cgraph_uid=34, symbol_order=33)

Modification phase of node put_cr/33
put_cr ()
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  OutDev0 (13);
  # DEBUG BEGIN_STMT
  OutDev0 (10);
  return;

}



;; Function put_charp (put_charp, funcdef_no=34, decl_uid=6622, cgraph_uid=35, symbol_order=34)

Modification phase of node put_charp/34
put_charp (unsigned char a)
{
  unsigned char i;
  unsigned char _1;
  unsigned char _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  i_4 = a_3(D) >> 4;
  # DEBUG i => i_4
  # DEBUG BEGIN_STMT
  # DEBUG i => i_4
  # DEBUG BEGIN_STMT
  _1 = D2C (i_4);
  OutDev0 (_1);
  # DEBUG BEGIN_STMT
  i_7 = a_3(D) & 15;
  # DEBUG i => i_7
  # DEBUG BEGIN_STMT
  _2 = D2C (i_7);
  OutDev0 (_2);
  # DEBUG BEGIN_STMT
  OutDev0 (44);
  return;

}



;; Function string_to_int (string_to_int, funcdef_no=35, decl_uid=6626, cgraph_uid=36, symbol_order=35)

Modification phase of node string_to_int/35
string_to_int (uint8_t * buf)
{
  uint32_t n;
  uint32_t p;
  uint32_t k;
  uint32_t j;
  uint32_t i;
  uint8_t * _1;
  unsigned char _2;
  int _3;
  int _5;
  long unsigned int _6;
  unsigned char _15;

  <bb 2> [local count: 118207164]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG j => 0
  # DEBUG BEGIN_STMT
  # DEBUG p => 0
  # DEBUG BEGIN_STMT
  # DEBUG n => 0
  # DEBUG BEGIN_STMT
  # DEBUG i => 0
  goto <bb 12>; [100.00%]

  <bb 3> [local count: 955630225]:
  # DEBUG BEGIN_STMT
  # DEBUG k => 0
  # DEBUG BEGIN_STMT
  _1 = buf_17(D) + n_14;
  _2 = *_1;
  _3 = (int) _2;
  switch (_2) <default: <L17> [33.33%], case 48 ... 57: <L1> [33.33%], case 65 ... 70: <L11> [33.33%]>

  <bb 4> [local count: 318511554]:
<L1>:
  # DEBUG BEGIN_STMT
  _15 = _2 & 15;
  k_20 = (uint32_t) _15;
  # DEBUG k => k_20
  # DEBUG BEGIN_STMT
  p_21 = p_13 + 1;
  # DEBUG p => p_21
  # DEBUG BEGIN_STMT
  goto <bb 9>; [100.00%]

  <bb 5> [local count: 318511554]:
<L11>:
  # DEBUG BEGIN_STMT
  _5 = _3 + -55;
  k_18 = (uint32_t) _5;
  # DEBUG k => k_18
  # DEBUG BEGIN_STMT
  p_19 = p_13 + 1;
  # DEBUG p => p_19
  # DEBUG BEGIN_STMT
  goto <bb 9>; [100.00%]

  <bb 6> [local count: 318511554]:
<L17>:
  # DEBUG BEGIN_STMT
  if (j_10 != 0)
    goto <bb 8>; [50.00%]
  else
    goto <bb 7>; [50.00%]

  <bb 7> [local count: 159255777]:
  if (p_13 != 0)
    goto <bb 8>; [50.00%]
  else
    goto <bb 9>; [50.00%]

  <bb 8> [local count: 238883666]:
  # DEBUG BEGIN_STMT
  # DEBUG i => 8

  <bb 9> [local count: 955534663]:
  # i_7 = PHI <i_8(4), i_8(5), 8(8), i_8(7)>
  # k_11 = PHI <k_20(4), k_18(5), 0(8), 0(7)>
  # p_12 = PHI <p_21(4), p_19(5), p_13(8), p_13(7)>
  # DEBUG p => p_12
  # DEBUG k => k_11
  # DEBUG i => i_7
  # DEBUG BEGIN_STMT
  if (i_7 != 8)
    goto <bb 10>; [66.00%]
  else
    goto <bb 11>; [34.00%]

  <bb 10> [local count: 630652877]:
  # DEBUG BEGIN_STMT
  _6 = j_10 << 4;
  j_22 = _6 + k_11;
  # DEBUG j => j_22

  <bb 11> [local count: 955534663]:
  # j_9 = PHI <j_10(9), j_22(10)>
  # DEBUG j => j_9
  # DEBUG BEGIN_STMT
  n_23 = n_14 + 1;
  # DEBUG n => n_23
  # DEBUG BEGIN_STMT
  i_24 = i_7 + 1;
  # DEBUG i => i_24

  <bb 12> [local count: 1073741824]:
  # i_8 = PHI <0(2), i_24(11)>
  # j_10 = PHI <0(2), j_9(11)>
  # p_13 = PHI <0(2), p_12(11)>
  # n_14 = PHI <0(2), n_23(11)>
  # DEBUG n => n_14
  # DEBUG p => p_13
  # DEBUG j => j_10
  # DEBUG i => i_8
  # DEBUG BEGIN_STMT
  if (i_8 <= 7)
    goto <bb 3>; [89.00%]
  else
    goto <bb 13>; [11.00%]

  <bb 13> [local count: 118111601]:
  # j_4 = PHI <j_10(12)>
  # DEBUG BEGIN_STMT
  return j_4;

}



;; Function programDword_data_flash (programDword_data_flash, funcdef_no=36, decl_uid=6656, cgraph_uid=37, symbol_order=36)

Modification phase of node programDword_data_flash/36
programDword_data_flash (uint32_t address, uint32_t * data)
{
  uint16_t ret;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG size => 8
  # DEBUG BEGIN_STMT
  return ret_1(D);

}


