What are '1B' variables ?

Andrew Haley aph-gcc@littlepinkcloud.COM
Fri Aug 31 14:30:00 GMT 2007


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))
	{



More information about the Gcc mailing list