parent
7b09543e23
commit
566cdc73b6
|
@ -1083,7 +1083,7 @@ convert.o: convert.c $(CONFIG_H) $(TREE_H) flags.h convert.h
|
||||||
|
|
||||||
tree.o : tree.c $(CONFIG_H) $(TREE_H) flags.h function.h
|
tree.o : tree.c $(CONFIG_H) $(TREE_H) flags.h function.h
|
||||||
print-tree.o : print-tree.c $(CONFIG_H) $(TREE_H)
|
print-tree.o : print-tree.c $(CONFIG_H) $(TREE_H)
|
||||||
stor-layout.o : stor-layout.c $(CONFIG_H) $(TREE_H) function.h
|
stor-layout.o : stor-layout.c $(CONFIG_H) $(TREE_H) flags.h function.h
|
||||||
fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H) flags.h
|
fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H) flags.h
|
||||||
toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h input.h \
|
toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h input.h \
|
||||||
insn-attr.h xcoffout.h defaults.h output.h
|
insn-attr.h xcoffout.h defaults.h output.h
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Compilation switch flag definitions for GNU CC.
|
/* Compilation switch flag definitions for GNU CC.
|
||||||
Copyright (C) 1987, 1988, 1994 Free Software Foundation, Inc.
|
Copyright (C) 1987, 1988, 1994, 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU CC.
|
This file is part of GNU CC.
|
||||||
|
|
||||||
|
@ -334,6 +334,9 @@ extern int flag_verbose_asm;
|
||||||
/* -fgnu-linker specifies use of the GNU linker for initializations.
|
/* -fgnu-linker specifies use of the GNU linker for initializations.
|
||||||
-fno-gnu-linker says that collect will be used. */
|
-fno-gnu-linker says that collect will be used. */
|
||||||
extern int flag_gnu_linker;
|
extern int flag_gnu_linker;
|
||||||
|
|
||||||
|
/* Tag all structures with __attribute__(packed) */
|
||||||
|
extern int flag_pack_struct;
|
||||||
|
|
||||||
/* Other basic status info about current function. */
|
/* Other basic status info about current function. */
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* C-compiler utilities for types and variables storage layout
|
/* C-compiler utilities for types and variables storage layout
|
||||||
Copyright (C) 1987, 1988, 1992, 1993, 1994 Free Software Foundation, Inc.
|
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU CC.
|
This file is part of GNU CC.
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
|
#include "flags.h"
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
|
|
||||||
#define CEIL(x,y) (((x) + (y) - 1) / (y))
|
#define CEIL(x,y) (((x) + (y) - 1) / (y))
|
||||||
|
@ -241,6 +242,8 @@ layout_decl (decl, known_align)
|
||||||
DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0;
|
DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0;
|
||||||
if (maximum_field_alignment != 0)
|
if (maximum_field_alignment != 0)
|
||||||
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment);
|
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment);
|
||||||
|
else if (flag_pack_struct)
|
||||||
|
DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DECL_BIT_FIELD (decl)
|
if (DECL_BIT_FIELD (decl)
|
||||||
|
@ -364,6 +367,8 @@ layout_record (rec)
|
||||||
int type_align = TYPE_ALIGN (TREE_TYPE (field));
|
int type_align = TYPE_ALIGN (TREE_TYPE (field));
|
||||||
if (maximum_field_alignment != 0)
|
if (maximum_field_alignment != 0)
|
||||||
type_align = MIN (type_align, maximum_field_alignment);
|
type_align = MIN (type_align, maximum_field_alignment);
|
||||||
|
else if (flag_pack_struct)
|
||||||
|
type_align = MIN (type_align, BITS_PER_UNIT);
|
||||||
|
|
||||||
record_align = MAX (record_align, type_align);
|
record_align = MAX (record_align, type_align);
|
||||||
}
|
}
|
||||||
|
@ -406,6 +411,7 @@ layout_record (rec)
|
||||||
&& !DECL_PACKED (field)
|
&& !DECL_PACKED (field)
|
||||||
/* If #pragma pack is in effect, turn off this feature. */
|
/* If #pragma pack is in effect, turn off this feature. */
|
||||||
&& maximum_field_alignment == 0
|
&& maximum_field_alignment == 0
|
||||||
|
&& !flag_pack_struct
|
||||||
&& !integer_zerop (DECL_SIZE (field)))
|
&& !integer_zerop (DECL_SIZE (field)))
|
||||||
{
|
{
|
||||||
int type_align = TYPE_ALIGN (TREE_TYPE (field));
|
int type_align = TYPE_ALIGN (TREE_TYPE (field));
|
||||||
|
@ -440,6 +446,8 @@ layout_record (rec)
|
||||||
|
|
||||||
if (maximum_field_alignment != 0)
|
if (maximum_field_alignment != 0)
|
||||||
type_align = MIN (type_align, maximum_field_alignment);
|
type_align = MIN (type_align, maximum_field_alignment);
|
||||||
|
else if (flag_pack_struct)
|
||||||
|
type_align = MIN (type_align, BITS_PER_UNIT);
|
||||||
|
|
||||||
/* A bit field may not span the unit of alignment of its type.
|
/* A bit field may not span the unit of alignment of its type.
|
||||||
Advance to next boundary if necessary. */
|
Advance to next boundary if necessary. */
|
||||||
|
|
|
@ -513,6 +513,9 @@ int flag_gnu_linker = 0;
|
||||||
int flag_gnu_linker = 1;
|
int flag_gnu_linker = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Tag all structures with __attribute__(packed) */
|
||||||
|
int flag_pack_struct = 0;
|
||||||
|
|
||||||
/* Table of language-independent -f options.
|
/* Table of language-independent -f options.
|
||||||
STRING is the option name. VARIABLE is the address of the variable.
|
STRING is the option name. VARIABLE is the address of the variable.
|
||||||
ON_VALUE is the value to store in VARIABLE
|
ON_VALUE is the value to store in VARIABLE
|
||||||
|
@ -558,6 +561,7 @@ struct { char *string; int *variable; int on_value;} f_options[] =
|
||||||
{"inhibit-size-directive", &flag_inhibit_size_directive, 1},
|
{"inhibit-size-directive", &flag_inhibit_size_directive, 1},
|
||||||
{"verbose-asm", &flag_verbose_asm, 1},
|
{"verbose-asm", &flag_verbose_asm, 1},
|
||||||
{"gnu-linker", &flag_gnu_linker, 1},
|
{"gnu-linker", &flag_gnu_linker, 1},
|
||||||
|
{"pack-struct", &flag_pack_struct, 1},
|
||||||
{"bytecode", &output_bytecode, 1}
|
{"bytecode", &output_bytecode, 1}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue