Parsed function:fifo_peek
Parsed function:fifo_clear
Parsed function:fifo_destroy
Parsed function:fifo_create
Parsed function:fifo_get_free_space
Parsed function:fifo_get_fill_level
Dump after hash based groups
Congruence classes: 6 (unique hash values: 6), with total: 6 items
Class size histogram [num of members]: number of classe number of classess
[1]: 6 classes


Dump after WPA based types groups
Congruence classes: 6 (unique hash values: 6), with total: 6 items
Class size histogram [num of members]: number of classe number of classess
[1]: 6 classes


Worklist has been filled with: 0
Address reference subdivision created: 0 new classes.
Dump after callgraph-based congruence reduction
Congruence classes: 6 (unique hash values: 6), with total: 6 items
Class size histogram [num of members]: number of classe number of classess
[1]: 6 classes


Init called for 0 items (0.00%).
Dump after full equality comparison of groups
Congruence classes: 6 (unique hash values: 6), with total: 6 items
Class size histogram [num of members]: number of classe number of classess
[1]: 6 classes


Worklist has been filled with: 0
Address reference subdivision created: 0 new classes.
Congruence classes: 6 (unique hash values: 6), with total: 6 items
Class size histogram [num of members]: number of classe number of classess
[1]: 6 classes



Item count: 6
Congruent classes before: 6, after: 6
Average class size before: 1.00, after: 1.00
Average non-singular class size: 0.00, count: 0
Equal symbols: 0
Fraction of visited symbols: 0.00%

__attribute__((hot))
fifo_peek (const struct fifo_t * const fifo, uint32_t num)
{
  volatile void * ret;
  long unsigned int _1;
  _Bool _2;
  long int _3;
  long int _4;
  void * * _5;
  long unsigned int _6;
  void * * _7;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0B
  # DEBUG BEGIN_STMT
  _1 = fifo_10(D)->depth;
  _2 = _1 > num_11(D);
  _3 = (long int) _2;
  _4 = __builtin_expect (_3, 1);
  if (_4 != 0)
    goto <bb 3>; [90.00%]
  else
    goto <bb 4>; [10.00%]

  <bb 3> [local count: 966367642]:
  # DEBUG BEGIN_STMT
  _5 = fifo_10(D)->data;
  _6 = num_11(D) * 4;
  _7 = _5 + _6;
  ret_12 = *_7;
  # DEBUG ret => ret_12

  <bb 4> [local count: 1073741824]:
  # ret_8 = PHI <0B(2), ret_12(3)>
  # DEBUG ret => ret_8
  # DEBUG BEGIN_STMT
  return ret_8;

}


__attribute__((cold))
fifo_clear (struct fifo_t * const fifo)
{
  long unsigned int _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (fifo_3(D) != 0B)
    goto <bb 3>; [70.00%]
  else
    goto <bb 4>; [30.00%]

  <bb 3> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  fifo_3(D)->read = 0;
  # DEBUG BEGIN_STMT
  _1 = fifo_3(D)->depth;
  fifo_3(D)->write = _1;

  <bb 4> [local count: 1073741824]:
  return;

}


__attribute__((cold))
fifo_destroy (struct fifo_t * fifo)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  memset (fifo_2(D), 0, 64);
  return;

}


__attribute__((cold))
fifo_create (const uint32_t depth, struct fifo_t * fifo, void * * data)
{
  struct fifo_t * tmp_fifo;
  long unsigned int _1;
  long unsigned int _2;
  signed int depth.1_3;
  _Bool _4;
  long int _5;
  long int _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG tmp_fifo => fifo_9(D)
  # DEBUG BEGIN_STMT
  if (depth_10(D) == 0)
    goto <bb 7>; [29.00%]
  else
    goto <bb 3>; [71.00%]

  <bb 3> [local count: 762356696]:
  _1 = depth_10(D) + 4294967295;
  _2 = _1 & depth_10(D);
  if (_2 != 0)
    goto <bb 7>; [29.00%]
  else
    goto <bb 4>; [71.00%]

  <bb 4> [local count: 541273254]:
  depth.1_3 = (signed int) depth_10(D);
  if (depth.1_3 < 0)
    goto <bb 7>; [22.11%]
  else
    goto <bb 5>; [77.89%]

  <bb 5> [local count: 421597737]:
  # DEBUG BEGIN_STMT
  fifo_9(D)->read = 0;
  # DEBUG BEGIN_STMT
  fifo_9(D)->write = 0;
  # DEBUG BEGIN_STMT
  fifo_9(D)->depth = depth_10(D);
  # DEBUG BEGIN_STMT
  fifo_9(D)->depth_mask = _1;
  # DEBUG BEGIN_STMT
  fifo_9(D)->data = data_16(D);
  # DEBUG BEGIN_STMT
  _4 = data_16(D) == 0B;
  _5 = (long int) _4;
  _6 = __builtin_expect (_5, 0);
  if (_6 != 0)
    goto <bb 6>; [10.00%]
  else
    goto <bb 7>; [90.00%]

  <bb 6> [local count: 42159774]:
  # DEBUG BEGIN_STMT
  # DEBUG tmp_fifo => 0B

  <bb 7> [local count: 1073741824]:
  # tmp_fifo_7 = PHI <0B(3), fifo_9(D)(5), 0B(6), 0B(2), 0B(4)>
  # DEBUG tmp_fifo => tmp_fifo_7
  # DEBUG BEGIN_STMT
  return tmp_fifo_7;

}


__attribute__((hot))
fifo_get_free_space (const struct fifo_t * const fifo, uint32_t * free_space)
{
  long unsigned int _1;
  long unsigned int _2;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG fifo => fifo_4(D)
  # DEBUG fill_level => &ret
  # DEBUG INLINE_ENTRY fifo_get_fill_level
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _7 = fifo_4(D)->write;
  _8 = fifo_4(D)->read;
  # DEBUG ret => _7 - _8
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG fifo => NULL
  # DEBUG fill_level => NULL
  # DEBUG err => 0
  # DEBUG BEGIN_STMT
  _1 = fifo_4(D)->depth;
  _9 = _8 - _7;
  _2 = _1 + _9;
  *free_space_5(D) = _2;
  # DEBUG BEGIN_STMT
  # DEBUG D#1 => {CLOBBER}
  # DEBUG ret => D#1
  return 0;

}


__attribute__((hot))
fifo_get_fill_level (const struct fifo_t * const fifo, uint32_t * fill_level)
{
  long unsigned int _1;
  long unsigned int _2;
  long unsigned int _3;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = fifo_5(D)->write;
  _2 = fifo_5(D)->read;
  _3 = _1 - _2;
  *fill_level_6(D) = _3;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  return 0;

}


