このページを編集する際は,編集に関する方針に従ってください.[]
概要[]
- gcc-4.1.0/gcc/c-lex.cにて定義
- 型の決定
引数[]
- unsigned HOST_WIDE_INT low
- unsigned HOST_WIDE_INT high
- unsigned int flags
概要[]
526 /* Ditto, but narrowest signed type. */
527 static enum integer_type_kind
528 narrowest_signed_type (unsigned HOST_WIDE_INT low,
529 unsigned HOST_WIDE_INT high, unsigned int flags)
530 {
531 enum integer_type_kind itk;
532
- flagを元に型を求める
533 if ((flags & CPP_N_WIDTH) == CPP_N_SMALL)
534 itk = itk_int;
535 else if ((flags & CPP_N_WIDTH) == CPP_N_MEDIUM)
536 itk = itk_long;
537 else
538 itk = itk_long_long;
539
540
- 先ほど決めた型の調整
541 for (; itk < itk_none; itk += 2 /* skip signed types */)
542 {
543 tree upper = TYPE_MAX_VALUE (integer_types[itk]);
544
545 if ((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (upper) > high
546 || ((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (upper) == high
547 && TREE_INT_CST_LOW (upper) >= low))
548 return itk;
549 }
550
551 return itk_none;
552 }