Emmanuel Fleury writes:

 >   # BLOCK 14 freq:1053
 >   # PRED: 12 [99.0%]  (false,exec)
 > <L16>:;
 >   *D.5198 = (char) __c;
 >   stdout.10->_IO_write_ptr = D.5198 + 1B;
 >   goto <bb 16> (<L11>);
 >   # SUCC: 16 [100.0%]  (fallthru,exec)
 > 
 > What does exactly does mean '1B' in this case ?

I think it just means 1 byte.

Andrew.

    case INTEGER_CST:
      if (TREE_CODE (TREE_TYPE (node)) == POINTER_TYPE)
        {
          /* In the case of a pointer, one may want to divide by the
             size of the pointed-to type.  Unfortunately, this not
             straightforward.  The C front-end maps expressions

             (int *) 5
             int *p; (p + 5)

             in such a way that the two INTEGER_CST nodes for "5" have
             different values but identical types.  In the latter
             case, the 5 is multiplied by sizeof (int) in c-common.c
             (pointer_int_sum) to convert it to a byte address, and
             yet the type of the node is left unchanged.  Argh.  What
             is consistent though is that the number value corresponds
             to bytes (UNITS) offset.

             NB: Neither of the following divisors can be trivially
             used to recover the original literal:

             TREE_INT_CST_LOW (TYPE_SIZE_UNIT (TREE_TYPE (node)))
             TYPE_PRECISION (TREE_TYPE (TREE_TYPE (node)))  */
          pp_wide_integer (buffer, TREE_INT_CST_LOW (node));
          pp_string (buffer, "B"); /* pseudo-unit */
        }
      else if (! host_integerp (node, 0))
        {

Reply via email to