varasm.c (struct constant_descriptor): Put CONTENTS inside a union to make it well-aligned.
* varasm.c (struct constant_descriptor): Put CONTENTS inside a union to make it well-aligned. Update all uses. From-SVN: r37422
This commit is contained in:
parent
26d4fec72e
commit
373577962c
@ -1,3 +1,8 @@
|
|||||||
|
2000-11-13 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
|
* varasm.c (struct constant_descriptor): Put CONTENTS inside a
|
||||||
|
union to make it well-aligned. Update all uses.
|
||||||
|
|
||||||
2000-11-13 Joseph S. Myers <jsm28@cam.ac.uk>
|
2000-11-13 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||||
|
|
||||||
* c-parse.in (initelt): Give appropriate pedantic warnings,
|
* c-parse.in (initelt): Give appropriate pedantic warnings,
|
||||||
|
22
gcc/varasm.c
22
gcc/varasm.c
@ -2327,7 +2327,16 @@ struct constant_descriptor
|
|||||||
struct constant_descriptor *next;
|
struct constant_descriptor *next;
|
||||||
char *label;
|
char *label;
|
||||||
rtx rtl;
|
rtx rtl;
|
||||||
unsigned char contents[1];
|
/* Make sure the data is reasonably aligned. */
|
||||||
|
union
|
||||||
|
{
|
||||||
|
unsigned char contents[1];
|
||||||
|
#ifdef HAVE_LONG_DOUBLE
|
||||||
|
long double d;
|
||||||
|
#else
|
||||||
|
double d;
|
||||||
|
#endif
|
||||||
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HASHBITS 30
|
#define HASHBITS 30
|
||||||
@ -2477,7 +2486,7 @@ compare_constant (exp, desc)
|
|||||||
tree exp;
|
tree exp;
|
||||||
struct constant_descriptor *desc;
|
struct constant_descriptor *desc;
|
||||||
{
|
{
|
||||||
return 0 != compare_constant_1 (exp, desc->contents);
|
return 0 != compare_constant_1 (exp, desc->u.contents);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compare constant expression EXP with a substring P of a constant descriptor.
|
/* Compare constant expression EXP with a substring P of a constant descriptor.
|
||||||
@ -3475,7 +3484,7 @@ compare_constant_rtx (mode, x, desc)
|
|||||||
rtx x;
|
rtx x;
|
||||||
struct constant_descriptor *desc;
|
struct constant_descriptor *desc;
|
||||||
{
|
{
|
||||||
register int *p = (int *) desc->contents;
|
register int *p = (int *) desc->u.contents;
|
||||||
register int *strp;
|
register int *strp;
|
||||||
register int len;
|
register int len;
|
||||||
struct rtx_const value;
|
struct rtx_const value;
|
||||||
@ -3503,10 +3512,9 @@ record_constant_rtx (mode, x)
|
|||||||
struct constant_descriptor *ptr;
|
struct constant_descriptor *ptr;
|
||||||
|
|
||||||
ptr = ((struct constant_descriptor *)
|
ptr = ((struct constant_descriptor *)
|
||||||
xcalloc (1,
|
xcalloc (1, (offsetof (struct constant_descriptor, u)
|
||||||
(sizeof (struct constant_descriptor)
|
+ sizeof (struct rtx_const))));
|
||||||
+ sizeof (struct rtx_const) - 1)));
|
decode_rtx_const (mode, x, (struct rtx_const *) ptr->u.contents);
|
||||||
decode_rtx_const (mode, x, (struct rtx_const *) ptr->contents);
|
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user