brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.9 KiB · 62511ba Raw
407 lines · c
1// Test without serialization:2// RUN: %clang_cc1 -x c -ffixed-point -ast-dump %s | FileCheck %s --strict-whitespace3//4// Test with serialization:5// RUN: %clang_cc1 -ffixed-point -emit-pch -o %t %s6// RUN: %clang_cc1 -x c -ffixed-point -include-pch %t -ast-dump-all /dev/null \7// RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \8// RUN: | FileCheck %s --strict-whitespace9 10/*  Various contexts where type _Accum can appear. */11 12// Primary fixed point types13signed short _Accum s_short_accum;14signed _Accum s_accum;15signed long _Accum s_long_accum;16unsigned short _Accum u_short_accum;17unsigned _Accum u_accum;18unsigned long _Accum u_long_accum;19signed short _Fract s_short_fract;20signed _Fract s_fract;21signed long _Fract s_long_fract;22unsigned short _Fract u_short_fract;23unsigned _Fract u_fract;24unsigned long _Fract u_long_fract;25 26// Aliased fixed point types27short _Accum short_accum;28_Accum accum;29long _Accum long_accum;30short _Fract short_fract;31_Fract fract;32long _Fract long_fract;33 34// Saturated fixed point types35_Sat signed short _Accum sat_s_short_accum;36_Sat signed _Accum sat_s_accum;37_Sat signed long _Accum sat_s_long_accum;38_Sat unsigned short _Accum sat_u_short_accum;39_Sat unsigned _Accum sat_u_accum;40_Sat unsigned long _Accum sat_u_long_accum;41_Sat signed short _Fract sat_s_short_fract;42_Sat signed _Fract sat_s_fract;43_Sat signed long _Fract sat_s_long_fract;44_Sat unsigned short _Fract sat_u_short_fract;45_Sat unsigned _Fract sat_u_fract;46_Sat unsigned long _Fract sat_u_long_fract;47 48// Aliased saturated fixed point types49_Sat short _Accum sat_short_accum;50_Sat _Accum sat_accum;51_Sat long _Accum sat_long_accum;52_Sat short _Fract sat_short_fract;53_Sat _Fract sat_fract;54_Sat long _Fract sat_long_fract;55 56//CHECK:      |-VarDecl {{.*}} s_short_accum 'short _Accum'57//CHECK-NEXT: |-VarDecl {{.*}} s_accum '_Accum'58//CHECK-NEXT: |-VarDecl {{.*}} s_long_accum 'long _Accum'59//CHECK-NEXT: |-VarDecl {{.*}} u_short_accum 'unsigned short _Accum'60//CHECK-NEXT: |-VarDecl {{.*}} u_accum 'unsigned _Accum'61//CHECK-NEXT: |-VarDecl {{.*}} u_long_accum 'unsigned long _Accum'62//CHECK-NEXT: |-VarDecl {{.*}} s_short_fract 'short _Fract'63//CHECK-NEXT: |-VarDecl {{.*}} s_fract '_Fract'64//CHECK-NEXT: |-VarDecl {{.*}} s_long_fract 'long _Fract'65//CHECK-NEXT: |-VarDecl {{.*}} u_short_fract 'unsigned short _Fract'66//CHECK-NEXT: |-VarDecl {{.*}} u_fract 'unsigned _Fract'67//CHECK-NEXT: |-VarDecl {{.*}} u_long_fract 'unsigned long _Fract'68//CHECK-NEXT: |-VarDecl {{.*}} short_accum 'short _Accum'69//CHECK-NEXT: |-VarDecl {{.*}} accum '_Accum'70//CHECK-NEXT: |-VarDecl {{.*}} long_accum 'long _Accum'71//CHECK-NEXT: |-VarDecl {{.*}} short_fract 'short _Fract'72//CHECK-NEXT: |-VarDecl {{.*}} fract '_Fract'73//CHECK-NEXT: |-VarDecl {{.*}} long_fract 'long _Fract'74//CHECK-NEXT: |-VarDecl {{.*}} sat_s_short_accum '_Sat short _Accum'75//CHECK-NEXT: |-VarDecl {{.*}} sat_s_accum '_Sat _Accum'76//CHECK-NEXT: |-VarDecl {{.*}} sat_s_long_accum '_Sat long _Accum'77//CHECK-NEXT: |-VarDecl {{.*}} sat_u_short_accum '_Sat unsigned short _Accum'78//CHECK-NEXT: |-VarDecl {{.*}} sat_u_accum '_Sat unsigned _Accum'79//CHECK-NEXT: |-VarDecl {{.*}} sat_u_long_accum '_Sat unsigned long _Accum'80//CHECK-NEXT: |-VarDecl {{.*}} sat_s_short_fract '_Sat short _Fract'81//CHECK-NEXT: |-VarDecl {{.*}} sat_s_fract '_Sat _Fract'82//CHECK-NEXT: |-VarDecl {{.*}} sat_s_long_fract '_Sat long _Fract'83//CHECK-NEXT: |-VarDecl {{.*}} sat_u_short_fract '_Sat unsigned short _Fract'84//CHECK-NEXT: |-VarDecl {{.*}} sat_u_fract '_Sat unsigned _Fract'85//CHECK-NEXT: |-VarDecl {{.*}} sat_u_long_fract '_Sat unsigned long _Fract'86//CHECK-NEXT: |-VarDecl {{.*}} sat_short_accum '_Sat short _Accum'87//CHECK-NEXT: |-VarDecl {{.*}} sat_accum '_Sat _Accum'88//CHECK-NEXT: |-VarDecl {{.*}} sat_long_accum '_Sat long _Accum'89//CHECK-NEXT: |-VarDecl {{.*}} sat_short_fract '_Sat short _Fract'90//CHECK-NEXT: |-VarDecl {{.*}} sat_fract '_Sat _Fract'91//CHECK-NEXT: |-VarDecl {{.*}} sat_long_fract '_Sat long _Fract'92 93#define MIX_TYPE_SPEC(SPEC, SIGN, SIZE, ID) \94  SPEC SIGN SIZE _Accum ID; \95  SIGN SPEC SIZE _Accum ID ## 2; \96  SIGN SIZE SPEC _Accum ID ## 3; \97  SIGN SIZE _Accum SPEC ID ## 4;98 99/* Mixing fixed point types with other type specifiers */100 101#define MIX_VOLATILE(SIGN, SIZE, ID) MIX_TYPE_SPEC(volatile, SIGN, SIZE, ID)102#define MIX_ATOMIC(SIGN, SIZE, ID) MIX_TYPE_SPEC(_Atomic, SIGN, SIZE, ID)103#define MIX_CONST(SIGN, SIZE, ID) MIX_TYPE_SPEC(const, SIGN, SIZE, ID)104 105MIX_VOLATILE(signed, short, vol_s_short_accum)106MIX_ATOMIC(signed, short, atm_s_short_accum)107MIX_CONST(signed, short, const_s_short_accum)108 109// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum 'volatile short _Accum'110// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum2 'volatile short _Accum'111// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum3 'volatile short _Accum'112// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum4 'volatile short _Accum'113 114// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum '_Atomic(short _Accum)'115// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum2 '_Atomic(short _Accum)'116// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum3 '_Atomic(short _Accum)'117// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum4 '_Atomic(short _Accum)'118 119// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum 'const short _Accum'120// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum2 'const short _Accum'121// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum3 'const short _Accum'122// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum4 'const short _Accum'123 124/* Typedefs */125 126// Primary fixed point types127typedef signed short   _Accum SsA_t;128typedef signed         _Accum SA_t;129typedef signed long    _Accum SlA_t;130typedef unsigned short _Accum UsA_t;131typedef unsigned       _Accum UA_t;132typedef unsigned long  _Accum UlA_t;133typedef signed short   _Fract SsF_t;134typedef signed         _Fract SF_t;135typedef signed long    _Fract SlF_t;136typedef unsigned short _Fract UsF_t;137typedef unsigned       _Fract UF_t;138typedef unsigned long  _Fract UlF_t;139 140// Aliased fixed point types141typedef short _Accum sA_t;142typedef       _Accum A_t;143typedef long  _Accum lA_t;144typedef short _Fract sF_t;145typedef       _Fract F_t;146typedef long  _Fract lF_t;147 148// Saturated fixed point types149typedef _Sat signed short   _Accum SatSsA_t;150typedef _Sat signed         _Accum SatSA_t;151typedef _Sat signed long    _Accum SatSlA_t;152typedef _Sat unsigned short _Accum SatUsA_t;153typedef _Sat unsigned       _Accum SatUA_t;154typedef _Sat unsigned long  _Accum SatUlA_t;155typedef _Sat signed short   _Fract SatSsF_t;156typedef _Sat signed         _Fract SatSF_t;157typedef _Sat signed long    _Fract SatSlF_t;158typedef _Sat unsigned short _Fract SatUsF_t;159typedef _Sat unsigned       _Fract SatUF_t;160typedef _Sat unsigned long  _Fract SatUlF_t;161 162// Aliased saturated fixed point types163typedef _Sat short   _Accum SatsA_t;164typedef _Sat         _Accum SatA_t;165typedef _Sat long    _Accum SatlA_t;166typedef _Sat short   _Fract SatsF_t;167typedef _Sat         _Fract SatF_t;168typedef _Sat long    _Fract SatlF_t;169 170SsA_t     SsA_type;171SA_t      SA_type;172SlA_t     SlA_type;173UsA_t     UsA_type;174UA_t      UA_type;175UlA_t     UlA_type;176SsF_t     SsF_type;177SF_t      SF_type;178SlF_t     SlF_type;179UsF_t     UsF_type;180UF_t      UF_type;181UlF_t     UlF_type;182 183sA_t      sA_type;184A_t       A_type;185lA_t      lA_type;186sF_t      sF_type;187F_t       F_type;188lF_t      lF_type;189 190SatSsA_t  SatSsA_type;191SatSA_t   SatSA_type;192SatSlA_t  SatSlA_type;193SatUsA_t  SatUsA_type;194SatUA_t   SatUA_type;195SatUlA_t  SatUlA_type;196SatSsF_t  SatSsF_type;197SatSF_t   SatSF_type;198SatSlF_t  SatSlF_type;199SatUsF_t  SatUsF_type;200SatUF_t   SatUF_type;201SatUlF_t  SatUlF_type;202 203SatsA_t   SatsA_type;204SatA_t    SatA_type;205SatlA_t   SatlA_type;206SatsF_t   SatsF_type;207SatF_t    SatF_type;208SatlF_t   SatlF_type;209 210//CHECK:      |-VarDecl {{.*}} SsA_type 'SsA_t':'short _Accum'211//CHECK-NEXT: |-VarDecl {{.*}} SA_type 'SA_t':'_Accum'212//CHECK-NEXT: |-VarDecl {{.*}} SlA_type 'SlA_t':'long _Accum'213//CHECK-NEXT: |-VarDecl {{.*}} UsA_type 'UsA_t':'unsigned short _Accum'214//CHECK-NEXT: |-VarDecl {{.*}} UA_type 'UA_t':'unsigned _Accum'215//CHECK-NEXT: |-VarDecl {{.*}} UlA_type 'UlA_t':'unsigned long _Accum'216//CHECK-NEXT: |-VarDecl {{.*}} SsF_type 'SsF_t':'short _Fract'217//CHECK-NEXT: |-VarDecl {{.*}} SF_type 'SF_t':'_Fract'218//CHECK-NEXT: |-VarDecl {{.*}} SlF_type 'SlF_t':'long _Fract'219//CHECK-NEXT: |-VarDecl {{.*}} UsF_type 'UsF_t':'unsigned short _Fract'220//CHECK-NEXT: |-VarDecl {{.*}} UF_type 'UF_t':'unsigned _Fract'221//CHECK-NEXT: |-VarDecl {{.*}} UlF_type 'UlF_t':'unsigned long _Fract'222//CHECK-NEXT: |-VarDecl {{.*}} sA_type 'sA_t':'short _Accum'223//CHECK-NEXT: |-VarDecl {{.*}} A_type 'A_t':'_Accum'224//CHECK-NEXT: |-VarDecl {{.*}} lA_type 'lA_t':'long _Accum'225//CHECK-NEXT: |-VarDecl {{.*}} sF_type 'sF_t':'short _Fract'226//CHECK-NEXT: |-VarDecl {{.*}} F_type 'F_t':'_Fract'227//CHECK-NEXT: |-VarDecl {{.*}} lF_type 'lF_t':'long _Fract'228 229//CHECK-NEXT: |-VarDecl {{.*}} SatSsA_type 'SatSsA_t':'_Sat short _Accum'230//CHECK-NEXT: |-VarDecl {{.*}} SatSA_type 'SatSA_t':'_Sat _Accum'231//CHECK-NEXT: |-VarDecl {{.*}} SatSlA_type 'SatSlA_t':'_Sat long _Accum'232//CHECK-NEXT: |-VarDecl {{.*}} SatUsA_type 'SatUsA_t':'_Sat unsigned short _Accum'233//CHECK-NEXT: |-VarDecl {{.*}} SatUA_type 'SatUA_t':'_Sat unsigned _Accum'234//CHECK-NEXT: |-VarDecl {{.*}} SatUlA_type 'SatUlA_t':'_Sat unsigned long _Accum'235//CHECK-NEXT: |-VarDecl {{.*}} SatSsF_type 'SatSsF_t':'_Sat short _Fract'236//CHECK-NEXT: |-VarDecl {{.*}} SatSF_type 'SatSF_t':'_Sat _Fract'237//CHECK-NEXT: |-VarDecl {{.*}} SatSlF_type 'SatSlF_t':'_Sat long _Fract'238//CHECK-NEXT: |-VarDecl {{.*}} SatUsF_type 'SatUsF_t':'_Sat unsigned short _Fract'239//CHECK-NEXT: |-VarDecl {{.*}} SatUF_type 'SatUF_t':'_Sat unsigned _Fract'240//CHECK-NEXT: |-VarDecl {{.*}} SatUlF_type 'SatUlF_t':'_Sat unsigned long _Fract'241//CHECK-NEXT: |-VarDecl {{.*}} SatsA_type 'SatsA_t':'_Sat short _Accum'242//CHECK-NEXT: |-VarDecl {{.*}} SatA_type 'SatA_t':'_Sat _Accum'243//CHECK-NEXT: |-VarDecl {{.*}} SatlA_type 'SatlA_t':'_Sat long _Accum'244//CHECK-NEXT: |-VarDecl {{.*}} SatsF_type 'SatsF_t':'_Sat short _Fract'245//CHECK-NEXT: |-VarDecl {{.*}} SatF_type 'SatF_t':'_Sat _Fract'246//CHECK-NEXT: |-VarDecl {{.*}} SatlF_type 'SatlF_t':'_Sat long _Fract'247 248// Fixed point literal exponent syntax249_Accum decexp1 = 1.575e1k;250_Accum decexp2 = 1.575E1k;251_Accum decexp3 = 1575e-2k;252_Accum decexp4 = 1575E-2k;253 254_Accum hexexp1 = 0x0.3p10k;255_Accum hexexp2 = 0x0.3P10k;256_Accum hexexp3 = 0x30000p-10k;257_Accum hexexp4 = 0x30000P-10k;258 259_Accum zeroexp1 = 1e0k;260_Accum zeroexp2 = 1e-0k;261 262//CHECK-NEXT: |-VarDecl {{.*}} decexp1 '_Accum' cinit263//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 15.75264//CHECK-NEXT: |-VarDecl {{.*}} decexp2 '_Accum' cinit265//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 15.75266//CHECK-NEXT: |-VarDecl {{.*}} decexp3 '_Accum' cinit267//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 15.75268//CHECK-NEXT: |-VarDecl {{.*}} decexp4 '_Accum' cinit269//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 15.75270 271//CHECK-NEXT: |-VarDecl {{.*}} hexexp1 '_Accum' cinit272//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 192.0273//CHECK-NEXT: |-VarDecl {{.*}} hexexp2 '_Accum' cinit274//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 192.0275//CHECK-NEXT: |-VarDecl {{.*}} hexexp3 '_Accum' cinit276//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 192.0277//CHECK-NEXT: |-VarDecl {{.*}} hexexp4 '_Accum' cinit278//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 192.0279 280//CHECK-NEXT: |-VarDecl {{.*}} zeroexp1 '_Accum' cinit281//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.0282//CHECK-NEXT: |-VarDecl {{.*}} zeroexp2 '_Accum' cinit283//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.0284 285// Fixed point literal values286_Accum literal1 = 2.5k;       // Precise decimal287_Accum literal2 = 0.0k;       // Zero288_Accum literal3 = 1.1k;       // Imprecise decimal289_Accum literal4 = 1.11k;290_Accum literal5 = 1.111k;291_Accum literal6 = 1.1111k;292_Accum literal7 = 1.11111k;   // After some point after the radix, adding any more293                              // digits to the literal will not result in any294                              // further precision since the nth digit added may295                              // be less than the precision that can be296                              // represented by the fractional bits of the type.297                              // This results in the same value being stored for298                              // the type.299 300//CHECK-NEXT: |-VarDecl {{.*}} literal1 '_Accum' cinit301//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 2.5302//CHECK-NEXT: |-VarDecl {{.*}} literal2 '_Accum' cinit303//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 0.0304//CHECK-NEXT: |-VarDecl {{.*}} literal3 '_Accum' cinit305//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.0999755859375306//CHECK-NEXT: |-VarDecl {{.*}} literal4 '_Accum' cinit307//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.1099853515625308//CHECK-NEXT: |-VarDecl {{.*}} literal5 '_Accum' cinit309//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.110992431640625310//CHECK-NEXT: |-VarDecl {{.*}} literal6 '_Accum' cinit311//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.111083984375312//CHECK-NEXT: |-VarDecl {{.*}} literal7 '_Accum' cinit313//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.111083984375314 315long _Accum longaccumliteral     = 0.99999999lk;316long _Accum longaccumliteral2    = 0.999999999lk;317long _Accum verylongaccumliteral = 0.99999999999999999999999999lk;318long _Fract longfractliteral     = 0.99999999lr;319long _Fract longfractliteral2    = 0.999999999lr;320long _Fract verylongfractliteral = 0.99999999999999999999999999lr;321 322//CHECK-NEXT: |-VarDecl {{.*}} longaccumliteral 'long _Accum' cinit323//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Accum' 0.999999989755451679229736328125324//CHECK-NEXT: |-VarDecl {{.*}} longaccumliteral2 'long _Accum' cinit325//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999986030161380767822265625326//CHECK-NEXT: |-VarDecl {{.*}} verylongaccumliteral 'long _Accum' cinit327//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875328//CHECK-NEXT: |-VarDecl {{.*}} longfractliteral 'long _Fract' cinit329//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Fract' 0.999999989755451679229736328125330//CHECK-NEXT: |-VarDecl {{.*}} longfractliteral2 'long _Fract' cinit331//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999986030161380767822265625332//CHECK-NEXT: |-VarDecl {{.*}} verylongfractliteral 'long _Fract' cinit333//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875334 335unsigned _Accum uliteral1 = 2.5uk;    // Unsigned336_Accum literal8 = -2.5k;              // Negative337 338//CHECK-NEXT: |-VarDecl {{.*}} uliteral1 'unsigned _Accum' cinit339//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'unsigned _Accum' 2.5340//CHECK-NEXT: |-VarDecl {{.*}} literal8 '_Accum' cinit341//CHECK-NEXT:   `-UnaryOperator {{.*}} '_Accum' prefix '-'342//CHECK-NEXT:     `-FixedPointLiteral {{.*}} '_Accum' 2.5343 344short _Accum  literalexact1 = 0.9921875hk;  // Exact value345_Accum        literalexact2 = 0.999969482421875k;346 347//CHECK-NEXT: |-VarDecl {{.*}} literalexact1 'short _Accum' cinit348//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'short _Accum' 0.9921875349//CHECK-NEXT: |-VarDecl {{.*}} literalexact2 '_Accum' cinit350//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 0.999969482421875351 352// Unfortunately we do not have enough space to store the exact decimal value of353// 0.9999999995343387126922607421875 ((1 << 31) - 1), but we can still use a354// large number of 9s to get the max fractional value.355long _Accum   long_accum_max = 0.999999999999999999999999999lk;356 357//CHECK-NEXT: |-VarDecl {{.*}} long_accum_max 'long _Accum' cinit358//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875359 360// Epsilon361short _Accum  short_accum_eps   = 0.0078125hk;362short _Accum  short_accum_eps2  = 0.0078124hk;  // Less than epsilon floors to zero363_Accum        accum_eps         = 0.000030517578125k;364_Accum        accum_eps2        = 0.000030517578124k;365long _Accum   long_accum_eps    = 0x1p-31lk;366long _Accum   long_accum_eps2   = 0x0.99999999p-31lk;367 368//CHECK-NEXT: |-VarDecl {{.*}} short_accum_eps 'short _Accum' cinit369//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'short _Accum' 0.0078125370//CHECK-NEXT: |-VarDecl {{.*}} short_accum_eps2 'short _Accum' cinit371//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'short _Accum' 0.0372//CHECK-NEXT: |-VarDecl {{.*}} accum_eps '_Accum' cinit373//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 0.000030517578125374//CHECK-NEXT: |-VarDecl {{.*}} accum_eps2 '_Accum' cinit375//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 0.0376//CHECK-NEXT: |-VarDecl {{.*}} long_accum_eps 'long _Accum' cinit377//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Accum' 0.0000000004656612873077392578125378//CHECK-NEXT: |-VarDecl {{.*}} long_accum_eps2 'long _Accum' cinit379//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Accum' 0.0380 381// Fract literals can be one but evaluate to the respective Fract max382short _Fract           short_fract_one   = 1.0hr;383_Fract                 fract_one         = 1.0r;384long _Fract            long_fract_one    = 1.0lr;385unsigned short _Fract  u_short_fract_one = 1.0uhr;386unsigned _Fract        u_fract_one       = 1.0ur;387unsigned long _Fract   u_long_fract_one  = 1.0ulr;388 389//CHECK-NEXT: |-VarDecl {{.*}} short_fract_one 'short _Fract' cinit390//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'short _Fract' 0.9921875391//CHECK-NEXT: |-VarDecl {{.*}} fract_one '_Fract' cinit392//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Fract' 0.999969482421875393//CHECK-NEXT: |-VarDecl {{.*}} long_fract_one 'long _Fract' cinit394//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875395 396//CHECK-NEXT: |-VarDecl {{.*}} u_short_fract_one 'unsigned short _Fract' cinit397//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'unsigned short _Fract' 0.99609375398//CHECK-NEXT: |-VarDecl {{.*}} u_fract_one 'unsigned _Fract' cinit399//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'unsigned _Fract' 0.9999847412109375400//CHECK-NEXT: |-VarDecl {{.*}} u_long_fract_one 'unsigned long _Fract' cinit401//CHECK-NEXT:   `-FixedPointLiteral {{.*}} 'unsigned long _Fract' 0.99999999976716935634613037109375402 403_Accum literallast = 1.0k;    // One404 405//CHECK-NEXT: `-VarDecl {{.*}} literallast '_Accum' cinit406//CHECK-NEXT:   `-FixedPointLiteral {{.*}} '_Accum' 1.0407