stage3/constant_folding.cc
changeset 621 e3616f6b6959
parent 612 c062ff18d04f
child 633 73b56dc69e61
child 640 ffa02cf2b335
equal deleted inserted replaced
620:aef32856eeb5 621:e3616f6b6959
   750 	/* NOTE 1: INT64_MIN = -(INT64_MAX + 1)   ---> assuming two's complement representation!!!
   750 	/* NOTE 1: INT64_MIN = -(INT64_MAX + 1)   ---> assuming two's complement representation!!!
   751 	 * NOTE 2: if the user happens to want INT_MIN, that value will first be parsed as a positive integer, before being negated here.
   751 	 * NOTE 2: if the user happens to want INT_MIN, that value will first be parsed as a positive integer, before being negated here.
   752 	 * However, the positive value cannot be stored inside an int64! So, in this case, we will get the value from the uint64 cvalue.
   752 	 * However, the positive value cannot be stored inside an int64! So, in this case, we will get the value from the uint64 cvalue.
   753 	 */
   753 	 */
   754 	// if (INT64_MIN == -INT64_MAX - 1) // We do not really need to check that the platform uses two's complement
   754 	// if (INT64_MIN == -INT64_MAX - 1) // We do not really need to check that the platform uses two's complement
   755 	if (VALID_CVALUE(uint64, symbol->exp) && (GET_CVALUE(uint64, symbol->exp) == -INT64_MIN)) { // How do we stop the compiler from complaining about a comparison between int and unsigned int?
   755 	if (VALID_CVALUE(uint64, symbol->exp) && (GET_CVALUE(uint64, symbol->exp) == (uint64_t)INT64_MAX+1)) {
   756 		SET_CVALUE(int64, symbol, INT64_MIN);
   756 		SET_CVALUE(int64, symbol, INT64_MIN);
   757 	}
   757 	}
   758 	return NULL;
   758 	return NULL;
   759 }
   759 }
   760 
   760