Add a testcase for PR 44806.
2010-07-03 H.J. Lu <hongjiu.lu@intel.com> PR c/44806 * gcc.dg/torture/pr44806.c: New. From-SVN: r161787
This commit is contained in:
parent
d3ca3d6bd7
commit
24b93bd603
|
@ -1,3 +1,8 @@
|
|||
2010-07-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR c/44806
|
||||
* gcc.dg/torture/pr44806.c: New.
|
||||
|
||||
2010-07-03 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/cond_expr1.adb: New test.
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
#define N_DEV_BITS_4 5
|
||||
#define N_INO_BITS_4 (32 - N_DEV_BITS_4 - 2 - 1)
|
||||
|
||||
#define N_DEV_BITS_8 8
|
||||
#define N_INO_BITS_8 (64 - N_DEV_BITS_8 - 2 - 1)
|
||||
|
||||
struct dev_ino_4
|
||||
{
|
||||
uint32_t mode:2;
|
||||
uint32_t short_ino:N_INO_BITS_4;
|
||||
uint32_t mapped_dev:N_DEV_BITS_4;
|
||||
uint32_t always_set:1;
|
||||
};
|
||||
|
||||
struct dev_ino_8
|
||||
{
|
||||
uint32_t mode:2;
|
||||
uint64_t short_ino:N_INO_BITS_8;
|
||||
uint32_t mapped_dev:N_DEV_BITS_8;
|
||||
uint32_t always_set:1;
|
||||
};
|
||||
|
||||
struct dev_ino_full
|
||||
{
|
||||
uint32_t mode:2;
|
||||
uint32_t dev;
|
||||
uint32_t ino;
|
||||
};
|
||||
|
||||
enum di_mode
|
||||
{
|
||||
DI_MODE_4 = 1,
|
||||
DI_MODE_8 = 2,
|
||||
DI_MODE_FULL = 3
|
||||
};
|
||||
|
||||
struct di_ent
|
||||
{
|
||||
union
|
||||
{
|
||||
struct dev_ino_4 di4;
|
||||
struct dev_ino_8 di8;
|
||||
struct dev_ino_full full;
|
||||
uint32_t u32;
|
||||
uint64_t u64;
|
||||
void *ptr;
|
||||
} u;
|
||||
};
|
||||
|
||||
static struct di_ent
|
||||
decode_ptr (struct di_ent const *v)
|
||||
{
|
||||
struct di_ent di;
|
||||
di.u.ptr = (void *) v;
|
||||
return di;
|
||||
}
|
||||
|
||||
static int
|
||||
di_ent_equal (void const *x, void const *y)
|
||||
{
|
||||
struct di_ent a = decode_ptr (x);
|
||||
struct di_ent b = decode_ptr (y);
|
||||
if (a.u.di4.mode != b.u.di4.mode)
|
||||
return 0;
|
||||
|
||||
if (a.u.di4.mode == DI_MODE_4)
|
||||
return (a.u.di4.short_ino == b.u.di4.short_ino
|
||||
&& a.u.di4.mapped_dev == b.u.di4.mapped_dev);
|
||||
|
||||
if (a.u.di8.mode == DI_MODE_8)
|
||||
return (a.u.di8.short_ino == b.u.di8.short_ino
|
||||
&& a.u.di8.mapped_dev == b.u.di8.mapped_dev);
|
||||
|
||||
return (a.u.full.ino == b.u.full.ino
|
||||
&& a.u.full.dev == b.u.full.dev);
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
if (di_ent_equal ((void *) 0x80143c4d, (void *) 0x80173851) != 0)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue