blob: 71733c3cad98a639b6f2e586be7449f2156eac31 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2" } */
typedef unsigned long int mp_limb_t;
typedef const mp_limb_t * mp_srcptr;
__attribute__((noipa))
int
refmpn_tstbit_bad (mp_srcptr ptr, unsigned long bit)
{
return (((ptr)[(bit)/(32 - 0)] & (((mp_limb_t) 1L) << ((bit)%(32 - 0)))) != 0);
}
__attribute__((noipa, optimize(0)))
int
refmpn_tstbit_good (mp_srcptr ptr, unsigned long bit)
{
return (((ptr)[(bit)/(32 - 0)] & (((mp_limb_t) 1L) << ((bit)%(32 - 0)))) != 0);
}
__attribute__((noipa))
int
refmpn_tstbit (mp_srcptr ptr, unsigned long bit)
{
if (refmpn_tstbit_bad (ptr, bit) != refmpn_tstbit_good (ptr, bit)) {
__builtin_trap();
}
return refmpn_tstbit_bad (ptr, bit);
}
int main(){
unsigned long num[] = { 0x3801ff9f, 0x0, 0x0, 0x0 };
refmpn_tstbit(num, 0);
}