* Enable #pragma pack with push and pop unconditionally
@ 2010-11-20 9:34 Joseph S. Myers
2010-11-20 12:40 ` Richard Guenther
0 siblings, 1 reply; 2+ messages in thread
From: Joseph S. Myers @ 2010-11-20 9:34 UTC (permalink / raw)
To: gcc-patches
As proposed in
<http://gcc.gnu.org/ml/gcc-patches/2010-11/msg01986.html>, this patch
eliminates the target macros HANDLE_SYSV_PRAGMA and
HANDLE_PRAGMA_PACK_PUSH_POP, enabling the relevant features
unconditionally.
The user documentation of #pragma pack makes no mention of it being
conditional on the target, so needs no changes. The documentation of
the target macros was inaccurate when it claimed #pragma weak support
was conditional on HANDLE_SYSV_PRAGMA; the code was always enabled
(#ifdef on HANDLE_PRAGMA_WEAK, a macro unconditionally #defined in
c-pragma.h), with checks of SUPPORTS_WEAK being done when weak symbols
are actually created. Some targets thought HANDLE_PRAGMA_WEAK was a
target macro; undefining that, or HANDLE_PRAGMA_PACK, was ineffective
given the order of inclusion of headers. Similarly,
HANDLE_PRAGMA_VISIBILITY was unconditionally defined and so served no
useful purpose.
Bootstrapped with no regressions on x86_64-unknown-linux-gnu. Also
tested building cc1 for crosses to: alpha-linux-gnu alpha-dec-osf5.1
alpha-dec-vms arm-netbsdelf cris-elf frv-elf i686-darwin
i686-freebsd8.1 i686-interix3 i686-mingw32 i686-netbsdelf i686-netware
i686-openbsd i686-wrs-vxworks ia64-hpux11.23 m32r-linux-gnu mep-elf
mips-sde-elf mmix-knuth-mmixware hppa64-hpux11.23 powerpc-ibm-aix5.3.0
powerpc-linux-gnu rx-elf score-elf spu-elf xstormy16-elf xtensa-elf
(builds for alpha-dec-osf5.1 and i686-interix3 failed for unrelated
reasons). OK to commit (the non-front-end parts; I think the removal
of always-true conditionals in the C++ front end counts as obvious)?
2010-11-19 Joseph Myers <joseph@codesourcery.com>
* doc/tm.texi.in (HANDLE_SYSV_PRAGMA,
HANDLE_PRAGMA_PACK_PUSH_POP): Remove.
(HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to
HANDLE_SYSV_PRAGMA.
* doc/tm.texi: Regenerate.
* system.h (HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_SYSV_PRAGMA,
HANDLE_PRAGMA_WEAK): Poison.
* config/alpha/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/alpha/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
define.
* config/alpha/osf5.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/arm/arm.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/arm/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/darwin.h (HANDLE_SYSV_PRAGMA): Don't define.
(HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/elfos.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/frv/frv.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/i386/cygming.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
define.
* config/i386/djgpp.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/i386/i386-interix.h (HANDLE_SYSV_PRAGMA): Don't define.
(HANDLE_PRAGMA_WEAK): Don't undefine.
* config/i386/netware.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
define.
* config/i386/vxworks.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/ia64/hpux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/ia64/ia64.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/interix.h (HANDLE_SYSV_PRAGMA): Don't define.
(HANDLE_PRAGMA_WEAK): Don't undefine.
* config/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/m32r/linux.h (HANDLE_SYSV_PRAGMA): Don't define.
(HANDLE_PRAGMA_PACK): Don't undefine.
* config/m32r/m32r.h (HANDLE_SYSV_PRAGMA): Don't undefine.
* config/mep/mep.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/mips/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/mips/sde.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/mmix/mmix.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
(HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/openbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/pa/pa-hpux.h (HANDLE_SYSV_PRAGMA): Don't define.
(HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/rs6000/aix.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/rs6000/sysv4.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
define.
* config/rx/rx.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/score/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/spu/spu.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
* config/stormy16/stormy16.h (HANDLE_SYSV_PRAGMA): Don't define.
* config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
c-family:
2010-11-19 Joseph Myers <joseph@codesourcery.com>
* c-pragma.c: Remove conditionals on HANDLE_PRAGMA_PACK,
HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_PRAGMA_WEAK and
HANDLE_PRAGMA_VISIBILITY.
* c-pragma.h (HANDLE_PRAGMA_WEAK, HANDLE_PRAGMA_PACK,
HANDLE_PRAGMA_VISIBILITY): Don't define.
(HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_PACK_PUSH_POP): Don't test.
cp:
2010-11-19 Joseph Myers <joseph@codesourcery.com>
* name-lookup.c (handle_namespace_attrs): Don't check
HANDLE_PRAGMA_VISIBILITY.
* parser.c (cp_parser_namespace_definition): Don't check
HANDLE_PRAGMA_VISIBILITY.
testsuite:
2010-11-19 Joseph Myers <joseph@codesourcery.com>
* g++.dg/cpp/_Pragma1.C: Test for all non-Solaris targets.
* gcc.dg/cpp/_Pragma6.c: Test for all non-Solaris targets.
* gcc.dg/pack-test-1.c: Test for all non-default_packed targets.
* gcc.dg/pack-test-2.c: Test for all targets.
* gcc.dg/pragma-align.c: Test for all targets.
* gcc.dg/pragma-pack-4.c: Do not skip for AVR.
* gcc.dg/ucnid-10.c: Test for all targets.
Index: gcc/doc/tm.texi
===================================================================
--- gcc/doc/tm.texi (revision 166951)
+++ gcc/doc/tm.texi (working copy)
@@ -10666,55 +10666,8 @@ rule to the makefile fragment pointed to
how to build this object file.
@end deftypefun
-@findex #pragma
-@findex pragma
-@defmac HANDLE_SYSV_PRAGMA
-Define this macro (to a value of 1) if you want the System V style
-pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
-[=<value>]} to be supported by gcc.
-
-The pack pragma specifies the maximum alignment (in bytes) of fields
-within a structure, in much the same way as the @samp{__aligned__} and
-@samp{__packed__} @code{__attribute__}s do. A pack value of zero resets
-the behavior to the default.
-
-A subtlety for Microsoft Visual C/C++ style bit-field packing
-(e.g.@: -mms-bitfields) for targets that support it:
-When a bit-field is inserted into a packed record, the whole size
-of the underlying type is used by one or more same-size adjacent
-bit-fields (that is, if its long:3, 32 bits is used in the record,
-and any additional adjacent long bit-fields are packed into the same
-chunk of 32 bits. However, if the size changes, a new field of that
-size is allocated).
-
-If both MS bit-fields and @samp{__attribute__((packed))} are used,
-the latter will take precedence. If @samp{__attribute__((packed))} is
-used on a single field when MS bit-fields are in use, it will take
-precedence for that field, but the alignment of the rest of the structure
-may affect its placement.
-
-The weak pragma only works if @code{SUPPORTS_WEAK} and
-@code{ASM_WEAKEN_LABEL} are defined. If enabled it allows the creation
-of specifically named weak labels, optionally with a value.
-@end defmac
-
-@findex #pragma
-@findex pragma
-@defmac HANDLE_PRAGMA_PACK_PUSH_POP
-Define this macro (to a value of 1) if you want to support the Win32
-style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
-pack(pop)}. The @samp{pack(push,[@var{n}])} pragma specifies the maximum
-alignment (in bytes) of fields within a structure, in much the same way as
-the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A
-pack value of zero resets the behavior to the default. Successive
-invocations of this pragma cause the previous values to be stacked, so
-that invocations of @samp{#pragma pack(pop)} will return to the previous
-value.
-@end defmac
-
@defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
-Define this macro, as well as
-@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
+Define this macro if macros should be expanded in the
arguments of @samp{#pragma pack}.
@end defmac
Index: gcc/doc/tm.texi.in
===================================================================
--- gcc/doc/tm.texi.in (revision 166951)
+++ gcc/doc/tm.texi.in (working copy)
@@ -10628,55 +10628,8 @@ rule to the makefile fragment pointed to
how to build this object file.
@end deftypefun
-@findex #pragma
-@findex pragma
-@defmac HANDLE_SYSV_PRAGMA
-Define this macro (to a value of 1) if you want the System V style
-pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
-[=<value>]} to be supported by gcc.
-
-The pack pragma specifies the maximum alignment (in bytes) of fields
-within a structure, in much the same way as the @samp{__aligned__} and
-@samp{__packed__} @code{__attribute__}s do. A pack value of zero resets
-the behavior to the default.
-
-A subtlety for Microsoft Visual C/C++ style bit-field packing
-(e.g.@: -mms-bitfields) for targets that support it:
-When a bit-field is inserted into a packed record, the whole size
-of the underlying type is used by one or more same-size adjacent
-bit-fields (that is, if its long:3, 32 bits is used in the record,
-and any additional adjacent long bit-fields are packed into the same
-chunk of 32 bits. However, if the size changes, a new field of that
-size is allocated).
-
-If both MS bit-fields and @samp{__attribute__((packed))} are used,
-the latter will take precedence. If @samp{__attribute__((packed))} is
-used on a single field when MS bit-fields are in use, it will take
-precedence for that field, but the alignment of the rest of the structure
-may affect its placement.
-
-The weak pragma only works if @code{SUPPORTS_WEAK} and
-@code{ASM_WEAKEN_LABEL} are defined. If enabled it allows the creation
-of specifically named weak labels, optionally with a value.
-@end defmac
-
-@findex #pragma
-@findex pragma
-@defmac HANDLE_PRAGMA_PACK_PUSH_POP
-Define this macro (to a value of 1) if you want to support the Win32
-style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
-pack(pop)}. The @samp{pack(push,[@var{n}])} pragma specifies the maximum
-alignment (in bytes) of fields within a structure, in much the same way as
-the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A
-pack value of zero resets the behavior to the default. Successive
-invocations of this pragma cause the previous values to be stacked, so
-that invocations of @samp{#pragma pack(pop)} will return to the previous
-value.
-@end defmac
-
@defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
-Define this macro, as well as
-@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
+Define this macro if macros should be expanded in the
arguments of @samp{#pragma pack}.
@end defmac
Index: gcc/c-family/c-pragma.c
===================================================================
--- gcc/c-family/c-pragma.c (revision 166951)
+++ gcc/c-family/c-pragma.c (working copy)
@@ -54,10 +54,8 @@ typedef struct GTY(()) align_stack {
static GTY(()) struct align_stack * alignment_stack;
-#ifdef HANDLE_PRAGMA_PACK
static void handle_pragma_pack (cpp_reader *);
-#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
/* If we have a "global" #pragma pack(<n>) in effect when the first
#pragma pack(push,<n>) is encountered, this stores the value of
maximum_field_alignment in effect. When the final pop_alignment()
@@ -125,13 +123,6 @@ pop_alignment (tree id)
alignment_stack = entry;
}
-#else /* not HANDLE_PRAGMA_PACK_PUSH_POP */
-#define SET_GLOBAL_ALIGNMENT(ALIGN) (maximum_field_alignment = (ALIGN))
-#define push_alignment(ID, N) \
- GCC_BAD ("#pragma pack(push[, id], <n>) is not supported on this target")
-#define pop_alignment(ID) \
- GCC_BAD ("#pragma pack(pop[, id], <n>) is not supported on this target")
-#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
/* #pragma pack ()
#pragma pack (N)
@@ -244,7 +235,6 @@ handle_pragma_pack (cpp_reader * ARG_UNU
case pop: pop_alignment (id); break;
}
}
-#endif /* HANDLE_PRAGMA_PACK */
typedef struct GTY(()) pending_weak_d
{
@@ -257,7 +247,6 @@ DEF_VEC_ALLOC_O(pending_weak,gc);
static GTY(()) VEC(pending_weak,gc) *pending_weaks;
-#ifdef HANDLE_PRAGMA_WEAK
static void apply_pragma_weak (tree, tree);
static void handle_pragma_weak (cpp_reader *);
@@ -380,17 +369,6 @@ handle_pragma_weak (cpp_reader * ARG_UNU
pe->value = value;
}
}
-#else
-void
-maybe_apply_pragma_weak (tree ARG_UNUSED (decl))
-{
-}
-
-void
-maybe_apply_pending_pragma_weaks (void)
-{
-}
-#endif /* HANDLE_PRAGMA_WEAK */
/* GCC supports two #pragma directives for renaming the external
symbol associated with a declaration (DECL_ASSEMBLER_NAME), for
@@ -617,7 +595,6 @@ maybe_apply_renaming_pragma (tree decl,
}
-#ifdef HANDLE_PRAGMA_VISIBILITY
static void handle_pragma_visibility (cpp_reader *);
static VEC (int, heap) *visstack;
@@ -710,8 +687,6 @@ handle_pragma_visibility (cpp_reader *du
warning (OPT_Wpragmas, "junk at end of %<#pragma GCC visibility%>");
}
-#endif
-
static void
handle_pragma_diagnostic(cpp_reader *ARG_UNUSED(dummy))
{
@@ -1316,19 +1291,13 @@ init_pragma (void)
cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
PRAGMA_GCC_PCH_PREPROCESS, false, false);
-#ifdef HANDLE_PRAGMA_PACK
#ifdef HANDLE_PRAGMA_PACK_WITH_EXPANSION
c_register_pragma_with_expansion (0, "pack", handle_pragma_pack);
#else
c_register_pragma (0, "pack", handle_pragma_pack);
#endif
-#endif
-#ifdef HANDLE_PRAGMA_WEAK
c_register_pragma (0, "weak", handle_pragma_weak);
-#endif
-#ifdef HANDLE_PRAGMA_VISIBILITY
c_register_pragma ("GCC", "visibility", handle_pragma_visibility);
-#endif
c_register_pragma ("GCC", "diagnostic", handle_pragma_diagnostic);
c_register_pragma ("GCC", "target", handle_pragma_target);
Index: gcc/c-family/c-pragma.h
===================================================================
--- gcc/c-family/c-pragma.h (revision 166951)
+++ gcc/c-family/c-pragma.h (working copy)
@@ -1,6 +1,6 @@
/* Pragma related interfaces.
Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2007, 2008 Free Software Foundation, Inc.
+ 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -75,26 +75,9 @@ typedef enum pragma_omp_clause {
extern struct cpp_reader* parse_in;
-#define HANDLE_PRAGMA_WEAK SUPPORTS_WEAK
-
-#ifdef HANDLE_SYSV_PRAGMA
-/* We always support #pragma pack for SYSV pragmas. */
-#ifndef HANDLE_PRAGMA_PACK
-#define HANDLE_PRAGMA_PACK 1
-#endif
-#endif /* HANDLE_SYSV_PRAGMA */
-
-
-#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
-/* If we are supporting #pragma pack(push... then we automatically
- support #pragma pack(<n>) */
-#define HANDLE_PRAGMA_PACK 1
-#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
-
/* It's safe to always leave visibility pragma enabled as if
visibility is not supported on the host OS platform the
statements are ignored. */
-#define HANDLE_PRAGMA_VISIBILITY 1
extern void push_visibility (const char *, int);
extern bool pop_visibility (int);
Index: gcc/testsuite/gcc.dg/pragma-align.c
===================================================================
--- gcc/testsuite/gcc.dg/pragma-align.c (revision 166951)
+++ gcc/testsuite/gcc.dg/pragma-align.c (working copy)
@@ -1,6 +1,6 @@
-/* Prove that HANDLE_SYSTEMV_PRAGMA alignment handling works somewhat. */
+/* Prove that pragma alignment handling works somewhat. */
-/* { dg-do run { target i?86-*-linux* x86_64-*-linux* i?86-*-*bsd* *-*-solaris2.* } } */
+/* { dg-do run } */
extern void abort (void);
Index: gcc/testsuite/gcc.dg/cpp/_Pragma6.c
===================================================================
--- gcc/testsuite/gcc.dg/cpp/_Pragma6.c (revision 166951)
+++ gcc/testsuite/gcc.dg/cpp/_Pragma6.c (working copy)
@@ -1,8 +1,7 @@
/* PR c/27747 */
/* This is supposed to succeed only if
- the target defines HANDLE_PRAGMA_PACK_PUSH_POP
- and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION. */
-/* { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* sh*-[us]*-elf m32c-*-* *-*-vxworks moxie-*-* mips-sgi-irix* alpha*-dec-osf* } } } } */
+ the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION. */
+/* { dg-do compile { target { ! { *-*-solaris2* } } } } */
#define push bar
#define foo _Pragma ("pack(push)")
Index: gcc/testsuite/gcc.dg/pack-test-1.c
===================================================================
--- gcc/testsuite/gcc.dg/pack-test-1.c (revision 166951)
+++ gcc/testsuite/gcc.dg/pack-test-1.c (working copy)
@@ -1,7 +1,7 @@
/* Test semantics of #pragma pack.
Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
-/* { dg-do compile { target { { *-*-linux* *-*-cygwin* powerpc*-*-eabi* } && { ! default_packed } } } } */
+/* { dg-do compile { target { ! default_packed } } } */
/* Mainly we're just testing whether pushing and popping seem to be
working correctly, and verifying the (alignment == 1) case, which
Index: gcc/testsuite/gcc.dg/pack-test-2.c
===================================================================
--- gcc/testsuite/gcc.dg/pack-test-2.c (revision 166951)
+++ gcc/testsuite/gcc.dg/pack-test-2.c (working copy)
@@ -1,7 +1,7 @@
/* Tests for syntax checking of #pragma pack.
Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
-/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
+/* { dg-do compile } */
#pragma pack(pop) /* { dg-warning "without matching" } */
Index: gcc/testsuite/gcc.dg/ucnid-10.c
===================================================================
--- gcc/testsuite/gcc.dg/ucnid-10.c (revision 166951)
+++ gcc/testsuite/gcc.dg/ucnid-10.c (working copy)
@@ -1,6 +1,6 @@
/* Verify diagnostics for extended identifiers refer to UCNs (in the C
locale). Test #pragma pack diagnostics. */
-/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
+/* { dg-do compile } */
/* { dg-options "-std=gnu99 -fextended-identifiers" } */
#pragma pack(push)
Index: gcc/testsuite/gcc.dg/pragma-pack-4.c
===================================================================
--- gcc/testsuite/gcc.dg/pragma-pack-4.c (revision 166951)
+++ gcc/testsuite/gcc.dg/pragma-pack-4.c (working copy)
@@ -1,6 +1,5 @@
/* PR c/28286 */
/* { dg-do compile } */
-/* { dg-skip-if "no Pragma pack" { "avr-*-*" } { "*" } { "" } } */
#pragma pack(0.5) /* { dg-warning "invalid constant" } */
Index: gcc/testsuite/g++.dg/cpp/_Pragma1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp/_Pragma1.C (revision 166951)
+++ gcc/testsuite/g++.dg/cpp/_Pragma1.C (working copy)
@@ -1,8 +1,7 @@
// PR c++/27748
// This is supposed to succeed only if
-// the target defines HANDLE_PRAGMA_PACK_PUSH_POP
-// and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
-// { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* mips-sgi-irix* sh*-[us]*-elf m32c-*-* *-*-vxworks alpha*-dec-osf* } } } }
+// the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
+// { dg-do compile { target { ! { *-*-solaris2* } } } }
#define push bar
#define foo _Pragma ("pack(push)")
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c (revision 166951)
+++ gcc/cp/parser.c (working copy)
@@ -13828,10 +13828,8 @@ cp_parser_namespace_definition (cp_parse
/* Parse the body of the namespace. */
cp_parser_namespace_body (parser);
-#ifdef HANDLE_PRAGMA_VISIBILITY
if (has_visibility)
pop_visibility (1);
-#endif
/* Finish the namespace. */
pop_namespace ();
Index: gcc/cp/name-lookup.c
===================================================================
--- gcc/cp/name-lookup.c (revision 166951)
+++ gcc/cp/name-lookup.c (working copy)
@@ -3239,7 +3239,6 @@ handle_namespace_attrs (tree ns, tree at
tree name = TREE_PURPOSE (d);
tree args = TREE_VALUE (d);
-#ifdef HANDLE_PRAGMA_VISIBILITY
if (is_attribute_p ("visibility", name))
{
tree x = args ? TREE_VALUE (args) : NULL_TREE;
@@ -3260,7 +3259,6 @@ handle_namespace_attrs (tree ns, tree at
saw_vis = true;
}
else
-#endif
{
warning (OPT_Wattributes, "%qD attribute directive ignored",
name);
Index: gcc/system.h
===================================================================
--- gcc/system.h (revision 166951)
+++ gcc/system.h (working copy)
@@ -777,7 +777,8 @@ extern void fancy_abort (const char *, i
ORDER_REGS_FOR_LOCAL_ALLOC FUNCTION_OUTGOING_VALUE \
ASM_DECLARE_CONSTANT_NAME MODIFY_TARGET_NAME SWITCHES_NEED_SPACES \
SWITCH_CURTAILS_COMPILATION SWITCH_TAKES_ARG WORD_SWITCH_TAKES_ARG \
- TARGET_OPTION_TRANSLATE_TABLE
+ TARGET_OPTION_TRANSLATE_TABLE HANDLE_PRAGMA_PACK_PUSH_POP \
+ HANDLE_SYSV_PRAGMA HANDLE_PRAGMA_WEAK
/* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
Index: gcc/config/alpha/linux.h
===================================================================
--- gcc/config/alpha/linux.h (revision 166951)
+++ gcc/config/alpha/linux.h (working copy)
@@ -1,7 +1,7 @@
/* Definitions of target machine for GNU compiler,
for Alpha Linux-based GNU systems.
- Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007
- Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
+ 2010 Free Software Foundation, Inc.
Contributed by Richard Henderson.
This file is part of GCC.
@@ -61,9 +61,6 @@ along with GCC; see the file COPYING3.
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
-/* Define this so that all GNU/Linux targets handle the same pragmas. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
/* Determine whether the entire c99 runtime is present in the
Index: gcc/config/alpha/vms.h
===================================================================
--- gcc/config/alpha/vms.h (revision 166951)
+++ gcc/config/alpha/vms.h (working copy)
@@ -69,8 +69,6 @@ along with GCC; see the file COPYING3.
#define POINTER_SIZE 32
#define POINTERS_EXTEND_UNSIGNED 0
-#define HANDLE_SYSV_PRAGMA 1
-
#define MAX_OFILE_ALIGNMENT 524288 /* 8 x 2^16 by DEC Ada Test CD40VRA */
/* The maximum alignment 'malloc' honors. */
Index: gcc/config/alpha/elf.h
===================================================================
--- gcc/config/alpha/elf.h (revision 166951)
+++ gcc/config/alpha/elf.h (working copy)
@@ -400,9 +400,6 @@ do { \
"%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
-/* We support #pragma. */
-#define HANDLE_SYSV_PRAGMA 1
-
/* Select a format to encode pointers in exception handling data. CODE
is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
true if the symbol may be affected by dynamic relocations.
Index: gcc/config/alpha/osf5.h
===================================================================
--- gcc/config/alpha/osf5.h (revision 166951)
+++ gcc/config/alpha/osf5.h (working copy)
@@ -268,9 +268,6 @@ __enable_execute_stack (void *addr)
#define TARGET_ASM_OPEN_PAREN ""
#define TARGET_ASM_CLOSE_PAREN ""
-/* Handle #pragma weak and #pragma pack. */
-#define HANDLE_SYSV_PRAGMA 1
-
/* Handle #pragma extern_prefix. */
#define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX 1
Index: gcc/config/linux.h
===================================================================
--- gcc/config/linux.h (revision 166951)
+++ gcc/config/linux.h (working copy)
@@ -102,9 +102,6 @@ see the files COPYING3 and COPYING.RUNTI
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
#endif
-/* Define this so we can compile MS code for use with WINE. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
#undef LINK_GCC_C_SEQUENCE_SPEC
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
Index: gcc/config/frv/frv.h
===================================================================
--- gcc/config/frv/frv.h (revision 166951)
+++ gcc/config/frv/frv.h (working copy)
@@ -2306,13 +2306,6 @@ fprintf (STREAM, "\t.word .L%d\n", VALUE
`QImode'. */
#define FUNCTION_MODE QImode
-/* Define this macro to handle System V style pragmas: #pragma pack and
- #pragma weak. Note, #pragma weak will only be supported if SUPPORT_WEAK is
- defined.
-
- Defined in svr4.h. */
-#define HANDLE_SYSV_PRAGMA 1
-
/* A C expression for the maximum number of instructions to execute via
conditional execution instructions instead of a branch. A value of
BRANCH_COST+1 is the default if the machine does not use
Index: gcc/config/elfos.h
===================================================================
--- gcc/config/elfos.h (revision 166951)
+++ gcc/config/elfos.h (working copy)
@@ -65,10 +65,6 @@ see the files COPYING3 and COPYING.RUNTI
#define PCC_BITFIELD_TYPE_MATTERS 1
#endif
-/* Handle #pragma weak and #pragma pack. */
-
-#define HANDLE_SYSV_PRAGMA 1
-
/* All ELF targets can support DWARF-2. */
#define DWARF2_DEBUGGING_INFO 1
Index: gcc/config/spu/spu.h
===================================================================
--- gcc/config/spu/spu.h (revision 166951)
+++ gcc/config/spu/spu.h (working copy)
@@ -512,8 +512,6 @@ targetm.resolve_overloaded_builtin = spu
#define NO_IMPLICIT_EXTERN_C 1
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
/* Canonicalize a comparison from one we don't have to one we do have. */
#define CANONICALIZE_COMPARISON(CODE,OP0,OP1) \
do { \
Index: gcc/config/interix.h
===================================================================
--- gcc/config/interix.h (revision 166951)
+++ gcc/config/interix.h (working copy)
@@ -61,9 +61,6 @@ for windows/multi thread */
#define STDC_0_IN_SYSTEM_HEADERS 1
-#define HANDLE_SYSV_PRAGMA 1
-#undef HANDLE_PRAGMA_WEAK /* until the link format can handle it */
-
/* Names to predefine in the preprocessor for this target machine. */
#define DBX_DEBUGGING_INFO 1
Index: gcc/config/mep/mep.h
===================================================================
--- gcc/config/mep/mep.h (revision 166951)
+++ gcc/config/mep/mep.h (working copy)
@@ -804,8 +804,6 @@ typedef struct
#define REGISTER_TARGET_PRAGMAS() mep_register_pragmas ()
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
/* If defined, a C expression to determine the base term of address X.
This macro is used in only one place: `find_base_term' in alias.c.
Index: gcc/config/m32r/linux.h
===================================================================
--- gcc/config/m32r/linux.h (revision 166951)
+++ gcc/config/m32r/linux.h (working copy)
@@ -1,5 +1,5 @@
/* Definitions for Renesas M32R running Linux-based GNU systems using ELF.
- Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2006, 2007, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -23,10 +23,6 @@
supposed to be outputting something that will assemble under SVr4.
This gets us pretty close. */
-#define HANDLE_SYSV_PRAGMA
-
-#undef HANDLE_PRAGMA_PACK
-
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (M32R GNU/Linux with ELF)");
Index: gcc/config/m32r/m32r.h
===================================================================
--- gcc/config/m32r/m32r.h (revision 166951)
+++ gcc/config/m32r/m32r.h (working copy)
@@ -22,7 +22,6 @@
- longlong.h?
*/
-#undef HANDLE_SYSV_PRAGMA
#undef SIZE_TYPE
#undef PTRDIFF_TYPE
#undef WCHAR_TYPE
Index: gcc/config/i386/cygming.h
===================================================================
--- gcc/config/i386/cygming.h (revision 166951)
+++ gcc/config/i386/cygming.h (working copy)
@@ -178,9 +178,6 @@ along with GCC; see the file COPYING3.
#undef LONG_TYPE_SIZE
#define LONG_TYPE_SIZE 32
\f
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
union tree_node;
#define TREE union tree_node *
\f
Index: gcc/config/i386/djgpp.h
===================================================================
--- gcc/config/i386/djgpp.h (revision 166951)
+++ gcc/config/i386/djgpp.h (working copy)
@@ -24,11 +24,6 @@ along with GCC; see the file COPYING3.
/* Don't assume anything about the header files. */
#define NO_IMPLICIT_EXTERN_C
-#define HANDLE_SYSV_PRAGMA 1
-
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
/* If defined, a C expression whose value is a string containing the
assembler operation to identify the following data as
uninitialized global data. If not defined, and neither
Index: gcc/config/i386/netware.h
===================================================================
--- gcc/config/i386/netware.h (revision 166951)
+++ gcc/config/i386/netware.h (working copy)
@@ -1,6 +1,7 @@
/* Core target definitions for GCC for Intel 80x86 running Netware.
and using dwarf for the debugging format.
- Copyright (C) 1993, 1994, 2004, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 2004, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
Written by David V. Henkel-Wallace (gumby@cygnus.com)
@@ -104,9 +105,6 @@ do { \
#undef DBX_REGISTER_NUMBER
#define DBX_REGISTER_NUMBER(n) (svr4_dbx_register_map[n])
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
/* Default structure packing is 1-byte. */
#define TARGET_DEFAULT_PACK_STRUCT 1
Index: gcc/config/i386/i386-interix.h
===================================================================
--- gcc/config/i386/i386-interix.h (revision 166951)
+++ gcc/config/i386/i386-interix.h (working copy)
@@ -1,6 +1,6 @@
/* Target definitions for GCC for Intel 80386 running Interix
- Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008
- Free Software Foundation, Inc.
+ Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009,
+ 2010 Free Software Foundation, Inc.
Parts:
by Douglas B. Rupp (drupp@cs.washington.edu).
@@ -30,9 +30,6 @@ along with GCC; see the file COPYING3.
#define SDB_DEBUGGING_INFO 1
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-#define HANDLE_SYSV_PRAGMA 1
-#undef HANDLE_PRAGMA_WEAK /* until the link format can handle it */
-
/* By default, target has a 80387, uses IEEE compatible arithmetic,
and returns float values in the 387 and needs stack probes
We also align doubles to 64-bits for MSVC default compatibility
Index: gcc/config/i386/vxworks.h
===================================================================
--- gcc/config/i386/vxworks.h (revision 166951)
+++ gcc/config/i386/vxworks.h (working copy)
@@ -1,5 +1,5 @@
/* IA32 VxWorks target definitions for GNU compiler.
- Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2007, 2010 Free Software Foundation, Inc.
Updated by CodeSourcery, LLC.
This file is part of GCC.
@@ -18,8 +18,6 @@ You should have received a copy of the G
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
-#define HANDLE_SYSV_PRAGMA 1
-
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (80586, VxWorks syntax)");
Index: gcc/config/rx/rx.h
===================================================================
--- gcc/config/rx/rx.h (revision 166951)
+++ gcc/config/rx/rx.h (working copy)
@@ -151,8 +151,6 @@ extern enum rx_cpu_types rx_cpu_type;
#define LEGITIMATE_CONSTANT_P(X) rx_is_legitimate_constant (X)
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
#define HAVE_PRE_DECCREMENT 1
#define HAVE_POST_INCREMENT 1
Index: gcc/config/xtensa/elf.h
===================================================================
--- gcc/config/xtensa/elf.h (revision 166951)
+++ gcc/config/xtensa/elf.h (working copy)
@@ -1,6 +1,6 @@
/* Xtensa/Elf configuration.
Derived from the configuration for GCC for Intel i386 running Linux.
- Copyright (C) 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2006, 2007, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -98,5 +98,3 @@ do \
"GCC", PREFIX_PRIORITY_LAST, 0, 0); \
} \
while (0)
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
Index: gcc/config/stormy16/stormy16.h
===================================================================
--- gcc/config/stormy16/stormy16.h (revision 166951)
+++ gcc/config/stormy16/stormy16.h (working copy)
@@ -587,5 +587,3 @@ enum reg_class
#define FUNCTION_MODE HImode
#define NO_IMPLICIT_EXTERN_C
-
-#define HANDLE_SYSV_PRAGMA 1
Index: gcc/config/cris/cris.h
===================================================================
--- gcc/config/cris/cris.h (revision 166951)
+++ gcc/config/cris/cris.h (working copy)
@@ -1334,9 +1334,6 @@ enum cris_pic_symbol_type
#define NO_IMPLICIT_EXTERN_C
-/* No specific purpose other than warningless compatibility. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
/*
* Local variables:
* eval: (c-set-style "gnu")
Index: gcc/config/netbsd.h
===================================================================
--- gcc/config/netbsd.h (revision 166951)
+++ gcc/config/netbsd.h (working copy)
@@ -1,6 +1,6 @@
/* Base configuration file for all NetBSD targets.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2007 Free Software Foundation, Inc.
+ 2007, 2009, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -158,10 +158,6 @@ along with GCC; see the file COPYING3.
#undef TARGET_POSIX_IO
#define TARGET_POSIX_IO
-/* Handle #pragma weak and #pragma pack. */
-
-#define HANDLE_SYSV_PRAGMA 1
-
/* Don't assume anything about the header files. */
#undef NO_IMPLICIT_EXTERN_C
#define NO_IMPLICIT_EXTERN_C 1
@@ -224,6 +220,3 @@ __enable_execute_stack (void *addr)
/* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */ \
(void) mprotect (page, end - page, 7); \
}
-
-/* Define this so we can compile MS code for use with WINE. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
Index: gcc/config/ia64/ia64.h
===================================================================
--- gcc/config/ia64/ia64.h (revision 166951)
+++ gcc/config/ia64/ia64.h (working copy)
@@ -1778,12 +1778,6 @@ do { \
#define FUNCTION_MODE Pmode
-/* Define this macro to handle System V style pragmas: #pragma pack and
- #pragma weak. Note, #pragma weak will only be supported if SUPPORT_WEAK is
- defined. */
-
-#define HANDLE_SYSV_PRAGMA 1
-
/* A C expression for the maximum number of instructions to execute via
conditional execution instructions instead of a branch. A value of
BRANCH_COST+1 is the default if the machine does not use
Index: gcc/config/ia64/hpux.h
===================================================================
--- gcc/config/ia64/hpux.h (revision 166951)
+++ gcc/config/ia64/hpux.h (working copy)
@@ -1,5 +1,5 @@
/* Definitions of target machine GNU compiler. IA-64 version.
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010
Free Software Foundation, Inc.
Contributed by Steve Ellcey <sje@cup.hp.com> and
Reva Cuthbertson <reva@cup.hp.com>
@@ -213,9 +213,6 @@ do { \
#undef NO_PROFILE_COUNTERS
#define NO_PROFILE_COUNTERS 0
-#undef HANDLE_PRAGMA_PACK_PUSH_POP
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
/* The HP-UX linker has a bug that causes calls from functions in
.text.unlikely to functions in .text to cause a segfault. Until
it is fixed, prevent code from being put into .text.unlikely or
Index: gcc/config/rs6000/aix.h
===================================================================
--- gcc/config/rs6000/aix.h (revision 166951)
+++ gcc/config/rs6000/aix.h (working copy)
@@ -56,9 +56,6 @@
#define ASM_OUTPUT_DWARF_TABLE_REF rs6000_aix_asm_output_dwarf_table_ref
#endif
-/* Handle #pragma weak and #pragma pack. */
-#define HANDLE_SYSV_PRAGMA 1
-
/* This is the only version of nm that collect2 can work with. */
#define REAL_NM_FILE_NAME "/usr/ucb/nm"
Index: gcc/config/rs6000/sysv4.h
===================================================================
--- gcc/config/rs6000/sysv4.h (revision 166951)
+++ gcc/config/rs6000/sysv4.h (working copy)
@@ -1062,18 +1062,6 @@ ncrtn.o%s"
/* Function name to call to do profiling. */
#define RS6000_MCOUNT "_mcount"
-/* Define this macro (to a value of 1) if you want to support the
- Win32 style pragmas #pragma pack(push,<n>)' and #pragma
- pack(pop)'. The pack(push,<n>) pragma specifies the maximum
- alignment (in bytes) of fields within a structure, in much the
- same way as the __aligned__' and __packed__' __attribute__'s
- do. A pack value of zero resets the behavior to the default.
- Successive invocations of this pragma cause the previous values to
- be stacked, so that invocations of #pragma pack(pop)' will return
- to the previous value. */
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
/* Select a format to encode pointers in exception handling data. CODE
is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
true if the symbol may be affected by dynamic relocations. */
Index: gcc/config/darwin.h
===================================================================
--- gcc/config/darwin.h (revision 166951)
+++ gcc/config/darwin.h (working copy)
@@ -869,11 +869,6 @@ enum machopic_addr_class {
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION darwin_asm_named_section
-/* Handle pragma weak and pragma pack. */
-#define HANDLE_SYSV_PRAGMA 1
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
#define DARWIN_REGISTER_TARGET_PRAGMAS() \
do { \
if (!flag_preprocess_only) \
Index: gcc/config/score/elf.h
===================================================================
--- gcc/config/score/elf.h (revision 166951)
+++ gcc/config/score/elf.h (working copy)
@@ -1,5 +1,5 @@
/* elf.h for Sunplus S+CORE processor
- Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -95,6 +95,3 @@
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
-
-/* We support #pragma. */
-#define HANDLE_SYSV_PRAGMA 1
Index: gcc/config/arm/arm.h
===================================================================
--- gcc/config/arm/arm.h (revision 166951)
+++ gcc/config/arm/arm.h (working copy)
@@ -2097,9 +2097,6 @@ typedef struct
#define ARM_INDEX_REGISTER_RTX_P(X) \
(GET_CODE (X) == REG && ARM_REG_OK_FOR_INDEX_P (X))
\f
-/* Define this for compatibility reasons. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
/* Specify the machine mode that this machine uses
for the index in the tablejump instruction. */
#define CASE_VECTOR_MODE Pmode
Index: gcc/config/arm/netbsd.h
===================================================================
--- gcc/config/arm/netbsd.h (revision 166951)
+++ gcc/config/arm/netbsd.h (working copy)
@@ -1,5 +1,5 @@
/* NetBSD/arm a.out version.
- Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008
+ Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008, 2010
Free Software Foundation, Inc.
Contributed by Mark Brinicombe (amb@physig.ph.kcl.ac.uk)
@@ -71,8 +71,6 @@
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
-#define HANDLE_SYSV_PRAGMA 1
-
/* We don't have any limit on the length as out debugger is GDB. */
#undef DBX_CONTIN_LENGTH
Index: gcc/config/pa/pa-hpux.h
===================================================================
--- gcc/config/pa/pa-hpux.h (revision 166951)
+++ gcc/config/pa/pa-hpux.h (working copy)
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler, for HP-UX.
- Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008
+ Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of GCC.
@@ -114,12 +114,4 @@ along with GCC; see the file COPYING3.
#undef TARGET_HPUX_UNWIND_LIBRARY
#define TARGET_HPUX_UNWIND_LIBRARY 1
-/* Handle #pragma weak and #pragma pack. */
-#undef HANDLE_SYSV_PRAGMA
-#define HANDLE_SYSV_PRAGMA
-
-/* Define this so we can compile MS code for use with WINE. */
-#undef HANDLE_PRAGMA_PACK_PUSH_POP
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
#define MD_UNWIND_SUPPORT "config/pa/hpux-unwind.h"
Index: gcc/config/mips/elf.h
===================================================================
--- gcc/config/mips/elf.h (revision 166951)
+++ gcc/config/mips/elf.h (working copy)
@@ -1,5 +1,5 @@
/* Target macros for mips*-elf targets.
- Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007
+ Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007, 2010
Free Software Foundation, Inc.
This file is part of GCC.
@@ -49,5 +49,3 @@ along with GCC; see the file COPYING3.
#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
#define NO_IMPLICIT_EXTERN_C 1
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
Index: gcc/config/mips/sde.h
===================================================================
--- gcc/config/mips/sde.h (revision 166951)
+++ gcc/config/mips/sde.h (working copy)
@@ -94,9 +94,6 @@ along with GCC; see the file COPYING3.
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "long int"
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
/* Use standard ELF-style local labels (not '$' as on early Irix). */
#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX "."
Index: gcc/config/openbsd.h
===================================================================
--- gcc/config/openbsd.h (revision 166951)
+++ gcc/config/openbsd.h (working copy)
@@ -282,12 +282,6 @@ do { \
/* Storage layout. */
\f
-/* bug work around: we don't want to support #pragma weak, but the current
- code layout needs HANDLE_PRAGMA_WEAK asserted for __attribute((weak)) to
- work. On the other hand, we don't define HANDLE_PRAGMA_WEAK directly,
- as this depends on a few other details as well... */
-#define HANDLE_SYSV_PRAGMA 1
-
/* Stack is explicitly denied execution rights on OpenBSD platforms. */
#define ENABLE_EXECUTE_STACK \
extern void __enable_execute_stack (void *); \
Index: gcc/config/freebsd.h
===================================================================
--- gcc/config/freebsd.h (revision 166951)
+++ gcc/config/freebsd.h (working copy)
@@ -45,9 +45,6 @@ along with GCC; see the file COPYING3.
#undef LIB_SPEC
#define LIB_SPEC FBSD_LIB_SPEC
-/* Define this so we can compile MS code for use with WINE. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
/************************[ Target stuff ]***********************************/
/* All FreeBSD Architectures support the ELF object file format. */
Index: gcc/config/mmix/mmix.h
===================================================================
--- gcc/config/mmix/mmix.h (revision 166951)
+++ gcc/config/mmix/mmix.h (working copy)
@@ -887,8 +887,6 @@ typedef struct { int regs; int lib; } CU
#define NO_IMPLICIT_EXTERN_C
-#define HANDLE_SYSV_PRAGMA 1
-
/* These are checked. */
#define DOLLARS_IN_IDENTIFIERS 0
#define NO_DOLLAR_IN_LABEL
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Enable #pragma pack with push and pop unconditionally
2010-11-20 9:34 Enable #pragma pack with push and pop unconditionally Joseph S. Myers
@ 2010-11-20 12:40 ` Richard Guenther
0 siblings, 0 replies; 2+ messages in thread
From: Richard Guenther @ 2010-11-20 12:40 UTC (permalink / raw)
To: Joseph S. Myers; +Cc: gcc-patches
On Sat, Nov 20, 2010 at 2:47 AM, Joseph S. Myers
<joseph@codesourcery.com> wrote:
> As proposed in
> <http://gcc.gnu.org/ml/gcc-patches/2010-11/msg01986.html>, this patch
> eliminates the target macros HANDLE_SYSV_PRAGMA and
> HANDLE_PRAGMA_PACK_PUSH_POP, enabling the relevant features
> unconditionally.
>
> The user documentation of #pragma pack makes no mention of it being
> conditional on the target, so needs no changes. The documentation of
> the target macros was inaccurate when it claimed #pragma weak support
> was conditional on HANDLE_SYSV_PRAGMA; the code was always enabled
> (#ifdef on HANDLE_PRAGMA_WEAK, a macro unconditionally #defined in
> c-pragma.h), with checks of SUPPORTS_WEAK being done when weak symbols
> are actually created. Some targets thought HANDLE_PRAGMA_WEAK was a
> target macro; undefining that, or HANDLE_PRAGMA_PACK, was ineffective
> given the order of inclusion of headers. Similarly,
> HANDLE_PRAGMA_VISIBILITY was unconditionally defined and so served no
> useful purpose.
>
> Bootstrapped with no regressions on x86_64-unknown-linux-gnu. Also
> tested building cc1 for crosses to: alpha-linux-gnu alpha-dec-osf5.1
> alpha-dec-vms arm-netbsdelf cris-elf frv-elf i686-darwin
> i686-freebsd8.1 i686-interix3 i686-mingw32 i686-netbsdelf i686-netware
> i686-openbsd i686-wrs-vxworks ia64-hpux11.23 m32r-linux-gnu mep-elf
> mips-sde-elf mmix-knuth-mmixware hppa64-hpux11.23 powerpc-ibm-aix5.3.0
> powerpc-linux-gnu rx-elf score-elf spu-elf xstormy16-elf xtensa-elf
> (builds for alpha-dec-osf5.1 and i686-interix3 failed for unrelated
> reasons). OK to commit (the non-front-end parts; I think the removal
> of always-true conditionals in the C++ front end counts as obvious)?
Ok.
Thanks,
Richard.
> 2010-11-19 Joseph Myers <joseph@codesourcery.com>
>
> * doc/tm.texi.in (HANDLE_SYSV_PRAGMA,
> HANDLE_PRAGMA_PACK_PUSH_POP): Remove.
> (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to
> HANDLE_SYSV_PRAGMA.
> * doc/tm.texi: Regenerate.
> * system.h (HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_SYSV_PRAGMA,
> HANDLE_PRAGMA_WEAK): Poison.
> * config/alpha/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/alpha/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
> define.
> * config/alpha/osf5.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/arm/arm.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/arm/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/darwin.h (HANDLE_SYSV_PRAGMA): Don't define.
> (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/elfos.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/frv/frv.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/i386/cygming.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
> define.
> * config/i386/djgpp.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/i386/i386-interix.h (HANDLE_SYSV_PRAGMA): Don't define.
> (HANDLE_PRAGMA_WEAK): Don't undefine.
> * config/i386/netware.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
> define.
> * config/i386/vxworks.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/ia64/hpux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/ia64/ia64.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/interix.h (HANDLE_SYSV_PRAGMA): Don't define.
> (HANDLE_PRAGMA_WEAK): Don't undefine.
> * config/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/m32r/linux.h (HANDLE_SYSV_PRAGMA): Don't define.
> (HANDLE_PRAGMA_PACK): Don't undefine.
> * config/m32r/m32r.h (HANDLE_SYSV_PRAGMA): Don't undefine.
> * config/mep/mep.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/mips/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/mips/sde.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/mmix/mmix.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
> (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/openbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/pa/pa-hpux.h (HANDLE_SYSV_PRAGMA): Don't define.
> (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/rs6000/aix.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/rs6000/sysv4.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
> define.
> * config/rx/rx.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/score/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/spu/spu.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
> * config/stormy16/stormy16.h (HANDLE_SYSV_PRAGMA): Don't define.
> * config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>
> c-family:
> 2010-11-19 Joseph Myers <joseph@codesourcery.com>
>
> * c-pragma.c: Remove conditionals on HANDLE_PRAGMA_PACK,
> HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_PRAGMA_WEAK and
> HANDLE_PRAGMA_VISIBILITY.
> * c-pragma.h (HANDLE_PRAGMA_WEAK, HANDLE_PRAGMA_PACK,
> HANDLE_PRAGMA_VISIBILITY): Don't define.
> (HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_PACK_PUSH_POP): Don't test.
>
> cp:
> 2010-11-19 Joseph Myers <joseph@codesourcery.com>
>
> * name-lookup.c (handle_namespace_attrs): Don't check
> HANDLE_PRAGMA_VISIBILITY.
> * parser.c (cp_parser_namespace_definition): Don't check
> HANDLE_PRAGMA_VISIBILITY.
>
> testsuite:
> 2010-11-19 Joseph Myers <joseph@codesourcery.com>
>
> * g++.dg/cpp/_Pragma1.C: Test for all non-Solaris targets.
> * gcc.dg/cpp/_Pragma6.c: Test for all non-Solaris targets.
> * gcc.dg/pack-test-1.c: Test for all non-default_packed targets.
> * gcc.dg/pack-test-2.c: Test for all targets.
> * gcc.dg/pragma-align.c: Test for all targets.
> * gcc.dg/pragma-pack-4.c: Do not skip for AVR.
> * gcc.dg/ucnid-10.c: Test for all targets.
>
> Index: gcc/doc/tm.texi
> ===================================================================
> --- gcc/doc/tm.texi (revision 166951)
> +++ gcc/doc/tm.texi (working copy)
> @@ -10666,55 +10666,8 @@ rule to the makefile fragment pointed to
> how to build this object file.
> @end deftypefun
>
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_SYSV_PRAGMA
> -Define this macro (to a value of 1) if you want the System V style
> -pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
> -[=<value>]} to be supported by gcc.
> -
> -The pack pragma specifies the maximum alignment (in bytes) of fields
> -within a structure, in much the same way as the @samp{__aligned__} and
> -@samp{__packed__} @code{__attribute__}s do. A pack value of zero resets
> -the behavior to the default.
> -
> -A subtlety for Microsoft Visual C/C++ style bit-field packing
> -(e.g.@: -mms-bitfields) for targets that support it:
> -When a bit-field is inserted into a packed record, the whole size
> -of the underlying type is used by one or more same-size adjacent
> -bit-fields (that is, if its long:3, 32 bits is used in the record,
> -and any additional adjacent long bit-fields are packed into the same
> -chunk of 32 bits. However, if the size changes, a new field of that
> -size is allocated).
> -
> -If both MS bit-fields and @samp{__attribute__((packed))} are used,
> -the latter will take precedence. If @samp{__attribute__((packed))} is
> -used on a single field when MS bit-fields are in use, it will take
> -precedence for that field, but the alignment of the rest of the structure
> -may affect its placement.
> -
> -The weak pragma only works if @code{SUPPORTS_WEAK} and
> -@code{ASM_WEAKEN_LABEL} are defined. If enabled it allows the creation
> -of specifically named weak labels, optionally with a value.
> -@end defmac
> -
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_PRAGMA_PACK_PUSH_POP
> -Define this macro (to a value of 1) if you want to support the Win32
> -style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
> -pack(pop)}. The @samp{pack(push,[@var{n}])} pragma specifies the maximum
> -alignment (in bytes) of fields within a structure, in much the same way as
> -the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A
> -pack value of zero resets the behavior to the default. Successive
> -invocations of this pragma cause the previous values to be stacked, so
> -that invocations of @samp{#pragma pack(pop)} will return to the previous
> -value.
> -@end defmac
> -
> @defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
> -Define this macro, as well as
> -@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
> +Define this macro if macros should be expanded in the
> arguments of @samp{#pragma pack}.
> @end defmac
>
> Index: gcc/doc/tm.texi.in
> ===================================================================
> --- gcc/doc/tm.texi.in (revision 166951)
> +++ gcc/doc/tm.texi.in (working copy)
> @@ -10628,55 +10628,8 @@ rule to the makefile fragment pointed to
> how to build this object file.
> @end deftypefun
>
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_SYSV_PRAGMA
> -Define this macro (to a value of 1) if you want the System V style
> -pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
> -[=<value>]} to be supported by gcc.
> -
> -The pack pragma specifies the maximum alignment (in bytes) of fields
> -within a structure, in much the same way as the @samp{__aligned__} and
> -@samp{__packed__} @code{__attribute__}s do. A pack value of zero resets
> -the behavior to the default.
> -
> -A subtlety for Microsoft Visual C/C++ style bit-field packing
> -(e.g.@: -mms-bitfields) for targets that support it:
> -When a bit-field is inserted into a packed record, the whole size
> -of the underlying type is used by one or more same-size adjacent
> -bit-fields (that is, if its long:3, 32 bits is used in the record,
> -and any additional adjacent long bit-fields are packed into the same
> -chunk of 32 bits. However, if the size changes, a new field of that
> -size is allocated).
> -
> -If both MS bit-fields and @samp{__attribute__((packed))} are used,
> -the latter will take precedence. If @samp{__attribute__((packed))} is
> -used on a single field when MS bit-fields are in use, it will take
> -precedence for that field, but the alignment of the rest of the structure
> -may affect its placement.
> -
> -The weak pragma only works if @code{SUPPORTS_WEAK} and
> -@code{ASM_WEAKEN_LABEL} are defined. If enabled it allows the creation
> -of specifically named weak labels, optionally with a value.
> -@end defmac
> -
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_PRAGMA_PACK_PUSH_POP
> -Define this macro (to a value of 1) if you want to support the Win32
> -style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
> -pack(pop)}. The @samp{pack(push,[@var{n}])} pragma specifies the maximum
> -alignment (in bytes) of fields within a structure, in much the same way as
> -the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A
> -pack value of zero resets the behavior to the default. Successive
> -invocations of this pragma cause the previous values to be stacked, so
> -that invocations of @samp{#pragma pack(pop)} will return to the previous
> -value.
> -@end defmac
> -
> @defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
> -Define this macro, as well as
> -@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
> +Define this macro if macros should be expanded in the
> arguments of @samp{#pragma pack}.
> @end defmac
>
> Index: gcc/c-family/c-pragma.c
> ===================================================================
> --- gcc/c-family/c-pragma.c (revision 166951)
> +++ gcc/c-family/c-pragma.c (working copy)
> @@ -54,10 +54,8 @@ typedef struct GTY(()) align_stack {
>
> static GTY(()) struct align_stack * alignment_stack;
>
> -#ifdef HANDLE_PRAGMA_PACK
> static void handle_pragma_pack (cpp_reader *);
>
> -#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
> /* If we have a "global" #pragma pack(<n>) in effect when the first
> #pragma pack(push,<n>) is encountered, this stores the value of
> maximum_field_alignment in effect. When the final pop_alignment()
> @@ -125,13 +123,6 @@ pop_alignment (tree id)
>
> alignment_stack = entry;
> }
> -#else /* not HANDLE_PRAGMA_PACK_PUSH_POP */
> -#define SET_GLOBAL_ALIGNMENT(ALIGN) (maximum_field_alignment = (ALIGN))
> -#define push_alignment(ID, N) \
> - GCC_BAD ("#pragma pack(push[, id], <n>) is not supported on this target")
> -#define pop_alignment(ID) \
> - GCC_BAD ("#pragma pack(pop[, id], <n>) is not supported on this target")
> -#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
>
> /* #pragma pack ()
> #pragma pack (N)
> @@ -244,7 +235,6 @@ handle_pragma_pack (cpp_reader * ARG_UNU
> case pop: pop_alignment (id); break;
> }
> }
> -#endif /* HANDLE_PRAGMA_PACK */
>
> typedef struct GTY(()) pending_weak_d
> {
> @@ -257,7 +247,6 @@ DEF_VEC_ALLOC_O(pending_weak,gc);
>
> static GTY(()) VEC(pending_weak,gc) *pending_weaks;
>
> -#ifdef HANDLE_PRAGMA_WEAK
> static void apply_pragma_weak (tree, tree);
> static void handle_pragma_weak (cpp_reader *);
>
> @@ -380,17 +369,6 @@ handle_pragma_weak (cpp_reader * ARG_UNU
> pe->value = value;
> }
> }
> -#else
> -void
> -maybe_apply_pragma_weak (tree ARG_UNUSED (decl))
> -{
> -}
> -
> -void
> -maybe_apply_pending_pragma_weaks (void)
> -{
> -}
> -#endif /* HANDLE_PRAGMA_WEAK */
>
> /* GCC supports two #pragma directives for renaming the external
> symbol associated with a declaration (DECL_ASSEMBLER_NAME), for
> @@ -617,7 +595,6 @@ maybe_apply_renaming_pragma (tree decl,
> }
>
>
> -#ifdef HANDLE_PRAGMA_VISIBILITY
> static void handle_pragma_visibility (cpp_reader *);
>
> static VEC (int, heap) *visstack;
> @@ -710,8 +687,6 @@ handle_pragma_visibility (cpp_reader *du
> warning (OPT_Wpragmas, "junk at end of %<#pragma GCC visibility%>");
> }
>
> -#endif
> -
> static void
> handle_pragma_diagnostic(cpp_reader *ARG_UNUSED(dummy))
> {
> @@ -1316,19 +1291,13 @@ init_pragma (void)
> cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
> PRAGMA_GCC_PCH_PREPROCESS, false, false);
>
> -#ifdef HANDLE_PRAGMA_PACK
> #ifdef HANDLE_PRAGMA_PACK_WITH_EXPANSION
> c_register_pragma_with_expansion (0, "pack", handle_pragma_pack);
> #else
> c_register_pragma (0, "pack", handle_pragma_pack);
> #endif
> -#endif
> -#ifdef HANDLE_PRAGMA_WEAK
> c_register_pragma (0, "weak", handle_pragma_weak);
> -#endif
> -#ifdef HANDLE_PRAGMA_VISIBILITY
> c_register_pragma ("GCC", "visibility", handle_pragma_visibility);
> -#endif
>
> c_register_pragma ("GCC", "diagnostic", handle_pragma_diagnostic);
> c_register_pragma ("GCC", "target", handle_pragma_target);
> Index: gcc/c-family/c-pragma.h
> ===================================================================
> --- gcc/c-family/c-pragma.h (revision 166951)
> +++ gcc/c-family/c-pragma.h (working copy)
> @@ -1,6 +1,6 @@
> /* Pragma related interfaces.
> Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
> - 2007, 2008 Free Software Foundation, Inc.
> + 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
>
> This file is part of GCC.
>
> @@ -75,26 +75,9 @@ typedef enum pragma_omp_clause {
>
> extern struct cpp_reader* parse_in;
>
> -#define HANDLE_PRAGMA_WEAK SUPPORTS_WEAK
> -
> -#ifdef HANDLE_SYSV_PRAGMA
> -/* We always support #pragma pack for SYSV pragmas. */
> -#ifndef HANDLE_PRAGMA_PACK
> -#define HANDLE_PRAGMA_PACK 1
> -#endif
> -#endif /* HANDLE_SYSV_PRAGMA */
> -
> -
> -#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
> -/* If we are supporting #pragma pack(push... then we automatically
> - support #pragma pack(<n>) */
> -#define HANDLE_PRAGMA_PACK 1
> -#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
> -
> /* It's safe to always leave visibility pragma enabled as if
> visibility is not supported on the host OS platform the
> statements are ignored. */
> -#define HANDLE_PRAGMA_VISIBILITY 1
> extern void push_visibility (const char *, int);
> extern bool pop_visibility (int);
>
> Index: gcc/testsuite/gcc.dg/pragma-align.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pragma-align.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/pragma-align.c (working copy)
> @@ -1,6 +1,6 @@
> -/* Prove that HANDLE_SYSTEMV_PRAGMA alignment handling works somewhat. */
> +/* Prove that pragma alignment handling works somewhat. */
>
> -/* { dg-do run { target i?86-*-linux* x86_64-*-linux* i?86-*-*bsd* *-*-solaris2.* } } */
> +/* { dg-do run } */
>
> extern void abort (void);
>
> Index: gcc/testsuite/gcc.dg/cpp/_Pragma6.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/cpp/_Pragma6.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/cpp/_Pragma6.c (working copy)
> @@ -1,8 +1,7 @@
> /* PR c/27747 */
> /* This is supposed to succeed only if
> - the target defines HANDLE_PRAGMA_PACK_PUSH_POP
> - and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION. */
> -/* { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* sh*-[us]*-elf m32c-*-* *-*-vxworks moxie-*-* mips-sgi-irix* alpha*-dec-osf* } } } } */
> + the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION. */
> +/* { dg-do compile { target { ! { *-*-solaris2* } } } } */
>
> #define push bar
> #define foo _Pragma ("pack(push)")
> Index: gcc/testsuite/gcc.dg/pack-test-1.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pack-test-1.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/pack-test-1.c (working copy)
> @@ -1,7 +1,7 @@
> /* Test semantics of #pragma pack.
> Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
>
> -/* { dg-do compile { target { { *-*-linux* *-*-cygwin* powerpc*-*-eabi* } && { ! default_packed } } } } */
> +/* { dg-do compile { target { ! default_packed } } } */
>
> /* Mainly we're just testing whether pushing and popping seem to be
> working correctly, and verifying the (alignment == 1) case, which
> Index: gcc/testsuite/gcc.dg/pack-test-2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pack-test-2.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/pack-test-2.c (working copy)
> @@ -1,7 +1,7 @@
> /* Tests for syntax checking of #pragma pack.
> Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
>
> -/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
> +/* { dg-do compile } */
>
> #pragma pack(pop) /* { dg-warning "without matching" } */
>
> Index: gcc/testsuite/gcc.dg/ucnid-10.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/ucnid-10.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/ucnid-10.c (working copy)
> @@ -1,6 +1,6 @@
> /* Verify diagnostics for extended identifiers refer to UCNs (in the C
> locale). Test #pragma pack diagnostics. */
> -/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
> +/* { dg-do compile } */
> /* { dg-options "-std=gnu99 -fextended-identifiers" } */
>
> #pragma pack(push)
> Index: gcc/testsuite/gcc.dg/pragma-pack-4.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pragma-pack-4.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/pragma-pack-4.c (working copy)
> @@ -1,6 +1,5 @@
> /* PR c/28286 */
> /* { dg-do compile } */
> -/* { dg-skip-if "no Pragma pack" { "avr-*-*" } { "*" } { "" } } */
>
>
> #pragma pack(0.5) /* { dg-warning "invalid constant" } */
> Index: gcc/testsuite/g++.dg/cpp/_Pragma1.C
> ===================================================================
> --- gcc/testsuite/g++.dg/cpp/_Pragma1.C (revision 166951)
> +++ gcc/testsuite/g++.dg/cpp/_Pragma1.C (working copy)
> @@ -1,8 +1,7 @@
> // PR c++/27748
> // This is supposed to succeed only if
> -// the target defines HANDLE_PRAGMA_PACK_PUSH_POP
> -// and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
> -// { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* mips-sgi-irix* sh*-[us]*-elf m32c-*-* *-*-vxworks alpha*-dec-osf* } } } }
> +// the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
> +// { dg-do compile { target { ! { *-*-solaris2* } } } }
>
> #define push bar
> #define foo _Pragma ("pack(push)")
> Index: gcc/cp/parser.c
> ===================================================================
> --- gcc/cp/parser.c (revision 166951)
> +++ gcc/cp/parser.c (working copy)
> @@ -13828,10 +13828,8 @@ cp_parser_namespace_definition (cp_parse
> /* Parse the body of the namespace. */
> cp_parser_namespace_body (parser);
>
> -#ifdef HANDLE_PRAGMA_VISIBILITY
> if (has_visibility)
> pop_visibility (1);
> -#endif
>
> /* Finish the namespace. */
> pop_namespace ();
> Index: gcc/cp/name-lookup.c
> ===================================================================
> --- gcc/cp/name-lookup.c (revision 166951)
> +++ gcc/cp/name-lookup.c (working copy)
> @@ -3239,7 +3239,6 @@ handle_namespace_attrs (tree ns, tree at
> tree name = TREE_PURPOSE (d);
> tree args = TREE_VALUE (d);
>
> -#ifdef HANDLE_PRAGMA_VISIBILITY
> if (is_attribute_p ("visibility", name))
> {
> tree x = args ? TREE_VALUE (args) : NULL_TREE;
> @@ -3260,7 +3259,6 @@ handle_namespace_attrs (tree ns, tree at
> saw_vis = true;
> }
> else
> -#endif
> {
> warning (OPT_Wattributes, "%qD attribute directive ignored",
> name);
> Index: gcc/system.h
> ===================================================================
> --- gcc/system.h (revision 166951)
> +++ gcc/system.h (working copy)
> @@ -777,7 +777,8 @@ extern void fancy_abort (const char *, i
> ORDER_REGS_FOR_LOCAL_ALLOC FUNCTION_OUTGOING_VALUE \
> ASM_DECLARE_CONSTANT_NAME MODIFY_TARGET_NAME SWITCHES_NEED_SPACES \
> SWITCH_CURTAILS_COMPILATION SWITCH_TAKES_ARG WORD_SWITCH_TAKES_ARG \
> - TARGET_OPTION_TRANSLATE_TABLE
> + TARGET_OPTION_TRANSLATE_TABLE HANDLE_PRAGMA_PACK_PUSH_POP \
> + HANDLE_SYSV_PRAGMA HANDLE_PRAGMA_WEAK
>
> /* Hooks that are no longer used. */
> #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
> Index: gcc/config/alpha/linux.h
> ===================================================================
> --- gcc/config/alpha/linux.h (revision 166951)
> +++ gcc/config/alpha/linux.h (working copy)
> @@ -1,7 +1,7 @@
> /* Definitions of target machine for GNU compiler,
> for Alpha Linux-based GNU systems.
> - Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007
> - Free Software Foundation, Inc.
> + Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
> + 2010 Free Software Foundation, Inc.
> Contributed by Richard Henderson.
>
> This file is part of GCC.
> @@ -61,9 +61,6 @@ along with GCC; see the file COPYING3.
> #undef WCHAR_TYPE
> #define WCHAR_TYPE "int"
>
> -/* Define this so that all GNU/Linux targets handle the same pragmas. */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
> #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
>
> /* Determine whether the entire c99 runtime is present in the
> Index: gcc/config/alpha/vms.h
> ===================================================================
> --- gcc/config/alpha/vms.h (revision 166951)
> +++ gcc/config/alpha/vms.h (working copy)
> @@ -69,8 +69,6 @@ along with GCC; see the file COPYING3.
> #define POINTER_SIZE 32
> #define POINTERS_EXTEND_UNSIGNED 0
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
> #define MAX_OFILE_ALIGNMENT 524288 /* 8 x 2^16 by DEC Ada Test CD40VRA */
>
> /* The maximum alignment 'malloc' honors. */
> Index: gcc/config/alpha/elf.h
> ===================================================================
> --- gcc/config/alpha/elf.h (revision 166951)
> +++ gcc/config/alpha/elf.h (working copy)
> @@ -400,9 +400,6 @@ do { \
> "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
> %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
>
> -/* We support #pragma. */
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* Select a format to encode pointers in exception handling data. CODE
> is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
> true if the symbol may be affected by dynamic relocations.
> Index: gcc/config/alpha/osf5.h
> ===================================================================
> --- gcc/config/alpha/osf5.h (revision 166951)
> +++ gcc/config/alpha/osf5.h (working copy)
> @@ -268,9 +268,6 @@ __enable_execute_stack (void *addr)
> #define TARGET_ASM_OPEN_PAREN ""
> #define TARGET_ASM_CLOSE_PAREN ""
>
> -/* Handle #pragma weak and #pragma pack. */
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* Handle #pragma extern_prefix. */
> #define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX 1
>
> Index: gcc/config/linux.h
> ===================================================================
> --- gcc/config/linux.h (revision 166951)
> +++ gcc/config/linux.h (working copy)
> @@ -102,9 +102,6 @@ see the files COPYING3 and COPYING.RUNTI
> #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
> #endif
>
> -/* Define this so we can compile MS code for use with WINE. */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
> #undef LINK_GCC_C_SEQUENCE_SPEC
> #define LINK_GCC_C_SEQUENCE_SPEC \
> "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
> Index: gcc/config/frv/frv.h
> ===================================================================
> --- gcc/config/frv/frv.h (revision 166951)
> +++ gcc/config/frv/frv.h (working copy)
> @@ -2306,13 +2306,6 @@ fprintf (STREAM, "\t.word .L%d\n", VALUE
> `QImode'. */
> #define FUNCTION_MODE QImode
>
> -/* Define this macro to handle System V style pragmas: #pragma pack and
> - #pragma weak. Note, #pragma weak will only be supported if SUPPORT_WEAK is
> - defined.
> -
> - Defined in svr4.h. */
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* A C expression for the maximum number of instructions to execute via
> conditional execution instructions instead of a branch. A value of
> BRANCH_COST+1 is the default if the machine does not use
> Index: gcc/config/elfos.h
> ===================================================================
> --- gcc/config/elfos.h (revision 166951)
> +++ gcc/config/elfos.h (working copy)
> @@ -65,10 +65,6 @@ see the files COPYING3 and COPYING.RUNTI
> #define PCC_BITFIELD_TYPE_MATTERS 1
> #endif
>
> -/* Handle #pragma weak and #pragma pack. */
> -
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* All ELF targets can support DWARF-2. */
>
> #define DWARF2_DEBUGGING_INFO 1
> Index: gcc/config/spu/spu.h
> ===================================================================
> --- gcc/config/spu/spu.h (revision 166951)
> +++ gcc/config/spu/spu.h (working copy)
> @@ -512,8 +512,6 @@ targetm.resolve_overloaded_builtin = spu
>
> #define NO_IMPLICIT_EXTERN_C 1
>
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> /* Canonicalize a comparison from one we don't have to one we do have. */
> #define CANONICALIZE_COMPARISON(CODE,OP0,OP1) \
> do { \
> Index: gcc/config/interix.h
> ===================================================================
> --- gcc/config/interix.h (revision 166951)
> +++ gcc/config/interix.h (working copy)
> @@ -61,9 +61,6 @@ for windows/multi thread */
>
> #define STDC_0_IN_SYSTEM_HEADERS 1
>
> -#define HANDLE_SYSV_PRAGMA 1
> -#undef HANDLE_PRAGMA_WEAK /* until the link format can handle it */
> -
> /* Names to predefine in the preprocessor for this target machine. */
>
> #define DBX_DEBUGGING_INFO 1
> Index: gcc/config/mep/mep.h
> ===================================================================
> --- gcc/config/mep/mep.h (revision 166951)
> +++ gcc/config/mep/mep.h (working copy)
> @@ -804,8 +804,6 @@ typedef struct
>
> #define REGISTER_TARGET_PRAGMAS() mep_register_pragmas ()
>
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> /* If defined, a C expression to determine the base term of address X.
> This macro is used in only one place: `find_base_term' in alias.c.
>
> Index: gcc/config/m32r/linux.h
> ===================================================================
> --- gcc/config/m32r/linux.h (revision 166951)
> +++ gcc/config/m32r/linux.h (working copy)
> @@ -1,5 +1,5 @@
> /* Definitions for Renesas M32R running Linux-based GNU systems using ELF.
> - Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
> + Copyright (C) 2003, 2004, 2006, 2007, 2010 Free Software Foundation, Inc.
>
> This file is part of GCC.
>
> @@ -23,10 +23,6 @@
> supposed to be outputting something that will assemble under SVr4.
> This gets us pretty close. */
>
> -#define HANDLE_SYSV_PRAGMA
> -
> -#undef HANDLE_PRAGMA_PACK
> -
> #undef TARGET_VERSION
> #define TARGET_VERSION fprintf (stderr, " (M32R GNU/Linux with ELF)");
>
> Index: gcc/config/m32r/m32r.h
> ===================================================================
> --- gcc/config/m32r/m32r.h (revision 166951)
> +++ gcc/config/m32r/m32r.h (working copy)
> @@ -22,7 +22,6 @@
> - longlong.h?
> */
>
> -#undef HANDLE_SYSV_PRAGMA
> #undef SIZE_TYPE
> #undef PTRDIFF_TYPE
> #undef WCHAR_TYPE
> Index: gcc/config/i386/cygming.h
> ===================================================================
> --- gcc/config/i386/cygming.h (revision 166951)
> +++ gcc/config/i386/cygming.h (working copy)
> @@ -178,9 +178,6 @@ along with GCC; see the file COPYING3.
> #undef LONG_TYPE_SIZE
> #define LONG_TYPE_SIZE 32
>
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> union tree_node;
> #define TREE union tree_node *
>
> Index: gcc/config/i386/djgpp.h
> ===================================================================
> --- gcc/config/i386/djgpp.h (revision 166951)
> +++ gcc/config/i386/djgpp.h (working copy)
> @@ -24,11 +24,6 @@ along with GCC; see the file COPYING3.
> /* Don't assume anything about the header files. */
> #define NO_IMPLICIT_EXTERN_C
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> /* If defined, a C expression whose value is a string containing the
> assembler operation to identify the following data as
> uninitialized global data. If not defined, and neither
> Index: gcc/config/i386/netware.h
> ===================================================================
> --- gcc/config/i386/netware.h (revision 166951)
> +++ gcc/config/i386/netware.h (working copy)
> @@ -1,6 +1,7 @@
> /* Core target definitions for GCC for Intel 80x86 running Netware.
> and using dwarf for the debugging format.
> - Copyright (C) 1993, 1994, 2004, 2007, 2008 Free Software Foundation, Inc.
> + Copyright (C) 1993, 1994, 2004, 2007, 2008, 2009, 2010
> + Free Software Foundation, Inc.
>
> Written by David V. Henkel-Wallace (gumby@cygnus.com)
>
> @@ -104,9 +105,6 @@ do { \
> #undef DBX_REGISTER_NUMBER
> #define DBX_REGISTER_NUMBER(n) (svr4_dbx_register_map[n])
>
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
> /* Default structure packing is 1-byte. */
> #define TARGET_DEFAULT_PACK_STRUCT 1
>
> Index: gcc/config/i386/i386-interix.h
> ===================================================================
> --- gcc/config/i386/i386-interix.h (revision 166951)
> +++ gcc/config/i386/i386-interix.h (working copy)
> @@ -1,6 +1,6 @@
> /* Target definitions for GCC for Intel 80386 running Interix
> - Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008
> - Free Software Foundation, Inc.
> + Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009,
> + 2010 Free Software Foundation, Inc.
>
> Parts:
> by Douglas B. Rupp (drupp@cs.washington.edu).
> @@ -30,9 +30,6 @@ along with GCC; see the file COPYING3.
> #define SDB_DEBUGGING_INFO 1
> #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
>
> -#define HANDLE_SYSV_PRAGMA 1
> -#undef HANDLE_PRAGMA_WEAK /* until the link format can handle it */
> -
> /* By default, target has a 80387, uses IEEE compatible arithmetic,
> and returns float values in the 387 and needs stack probes
> We also align doubles to 64-bits for MSVC default compatibility
> Index: gcc/config/i386/vxworks.h
> ===================================================================
> --- gcc/config/i386/vxworks.h (revision 166951)
> +++ gcc/config/i386/vxworks.h (working copy)
> @@ -1,5 +1,5 @@
> /* IA32 VxWorks target definitions for GNU compiler.
> - Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
> + Copyright (C) 2003, 2004, 2005, 2007, 2010 Free Software Foundation, Inc.
> Updated by CodeSourcery, LLC.
>
> This file is part of GCC.
> @@ -18,8 +18,6 @@ You should have received a copy of the G
> along with GCC; see the file COPYING3. If not see
> <http://www.gnu.org/licenses/>. */
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
> #undef TARGET_VERSION
> #define TARGET_VERSION fprintf (stderr, " (80586, VxWorks syntax)");
>
> Index: gcc/config/rx/rx.h
> ===================================================================
> --- gcc/config/rx/rx.h (revision 166951)
> +++ gcc/config/rx/rx.h (working copy)
> @@ -151,8 +151,6 @@ extern enum rx_cpu_types rx_cpu_type;
>
> #define LEGITIMATE_CONSTANT_P(X) rx_is_legitimate_constant (X)
>
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> #define HAVE_PRE_DECCREMENT 1
> #define HAVE_POST_INCREMENT 1
>
> Index: gcc/config/xtensa/elf.h
> ===================================================================
> --- gcc/config/xtensa/elf.h (revision 166951)
> +++ gcc/config/xtensa/elf.h (working copy)
> @@ -1,6 +1,6 @@
> /* Xtensa/Elf configuration.
> Derived from the configuration for GCC for Intel i386 running Linux.
> - Copyright (C) 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
> + Copyright (C) 2001, 2003, 2006, 2007, 2010 Free Software Foundation, Inc.
>
> This file is part of GCC.
>
> @@ -98,5 +98,3 @@ do \
> "GCC", PREFIX_PRIORITY_LAST, 0, 0); \
> } \
> while (0)
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> Index: gcc/config/stormy16/stormy16.h
> ===================================================================
> --- gcc/config/stormy16/stormy16.h (revision 166951)
> +++ gcc/config/stormy16/stormy16.h (working copy)
> @@ -587,5 +587,3 @@ enum reg_class
> #define FUNCTION_MODE HImode
>
> #define NO_IMPLICIT_EXTERN_C
> -
> -#define HANDLE_SYSV_PRAGMA 1
> Index: gcc/config/cris/cris.h
> ===================================================================
> --- gcc/config/cris/cris.h (revision 166951)
> +++ gcc/config/cris/cris.h (working copy)
> @@ -1334,9 +1334,6 @@ enum cris_pic_symbol_type
>
> #define NO_IMPLICIT_EXTERN_C
>
> -/* No specific purpose other than warningless compatibility. */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> /*
> * Local variables:
> * eval: (c-set-style "gnu")
> Index: gcc/config/netbsd.h
> ===================================================================
> --- gcc/config/netbsd.h (revision 166951)
> +++ gcc/config/netbsd.h (working copy)
> @@ -1,6 +1,6 @@
> /* Base configuration file for all NetBSD targets.
> Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
> - 2007 Free Software Foundation, Inc.
> + 2007, 2009, 2010 Free Software Foundation, Inc.
>
> This file is part of GCC.
>
> @@ -158,10 +158,6 @@ along with GCC; see the file COPYING3.
> #undef TARGET_POSIX_IO
> #define TARGET_POSIX_IO
>
> -/* Handle #pragma weak and #pragma pack. */
> -
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* Don't assume anything about the header files. */
> #undef NO_IMPLICIT_EXTERN_C
> #define NO_IMPLICIT_EXTERN_C 1
> @@ -224,6 +220,3 @@ __enable_execute_stack (void *addr)
> /* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */ \
> (void) mprotect (page, end - page, 7); \
> }
> -
> -/* Define this so we can compile MS code for use with WINE. */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> Index: gcc/config/ia64/ia64.h
> ===================================================================
> --- gcc/config/ia64/ia64.h (revision 166951)
> +++ gcc/config/ia64/ia64.h (working copy)
> @@ -1778,12 +1778,6 @@ do { \
>
> #define FUNCTION_MODE Pmode
>
> -/* Define this macro to handle System V style pragmas: #pragma pack and
> - #pragma weak. Note, #pragma weak will only be supported if SUPPORT_WEAK is
> - defined. */
> -
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* A C expression for the maximum number of instructions to execute via
> conditional execution instructions instead of a branch. A value of
> BRANCH_COST+1 is the default if the machine does not use
> Index: gcc/config/ia64/hpux.h
> ===================================================================
> --- gcc/config/ia64/hpux.h (revision 166951)
> +++ gcc/config/ia64/hpux.h (working copy)
> @@ -1,5 +1,5 @@
> /* Definitions of target machine GNU compiler. IA-64 version.
> - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
> + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010
> Free Software Foundation, Inc.
> Contributed by Steve Ellcey <sje@cup.hp.com> and
> Reva Cuthbertson <reva@cup.hp.com>
> @@ -213,9 +213,6 @@ do { \
> #undef NO_PROFILE_COUNTERS
> #define NO_PROFILE_COUNTERS 0
>
> -#undef HANDLE_PRAGMA_PACK_PUSH_POP
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
> /* The HP-UX linker has a bug that causes calls from functions in
> .text.unlikely to functions in .text to cause a segfault. Until
> it is fixed, prevent code from being put into .text.unlikely or
> Index: gcc/config/rs6000/aix.h
> ===================================================================
> --- gcc/config/rs6000/aix.h (revision 166951)
> +++ gcc/config/rs6000/aix.h (working copy)
> @@ -56,9 +56,6 @@
> #define ASM_OUTPUT_DWARF_TABLE_REF rs6000_aix_asm_output_dwarf_table_ref
> #endif
>
> -/* Handle #pragma weak and #pragma pack. */
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* This is the only version of nm that collect2 can work with. */
> #define REAL_NM_FILE_NAME "/usr/ucb/nm"
>
> Index: gcc/config/rs6000/sysv4.h
> ===================================================================
> --- gcc/config/rs6000/sysv4.h (revision 166951)
> +++ gcc/config/rs6000/sysv4.h (working copy)
> @@ -1062,18 +1062,6 @@ ncrtn.o%s"
> /* Function name to call to do profiling. */
> #define RS6000_MCOUNT "_mcount"
>
> -/* Define this macro (to a value of 1) if you want to support the
> - Win32 style pragmas #pragma pack(push,<n>)' and #pragma
> - pack(pop)'. The pack(push,<n>) pragma specifies the maximum
> - alignment (in bytes) of fields within a structure, in much the
> - same way as the __aligned__' and __packed__' __attribute__'s
> - do. A pack value of zero resets the behavior to the default.
> - Successive invocations of this pragma cause the previous values to
> - be stacked, so that invocations of #pragma pack(pop)' will return
> - to the previous value. */
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> /* Select a format to encode pointers in exception handling data. CODE
> is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
> true if the symbol may be affected by dynamic relocations. */
> Index: gcc/config/darwin.h
> ===================================================================
> --- gcc/config/darwin.h (revision 166951)
> +++ gcc/config/darwin.h (working copy)
> @@ -869,11 +869,6 @@ enum machopic_addr_class {
> #undef TARGET_ASM_NAMED_SECTION
> #define TARGET_ASM_NAMED_SECTION darwin_asm_named_section
>
> -/* Handle pragma weak and pragma pack. */
> -#define HANDLE_SYSV_PRAGMA 1
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> #define DARWIN_REGISTER_TARGET_PRAGMAS() \
> do { \
> if (!flag_preprocess_only) \
> Index: gcc/config/score/elf.h
> ===================================================================
> --- gcc/config/score/elf.h (revision 166951)
> +++ gcc/config/score/elf.h (working copy)
> @@ -1,5 +1,5 @@
> /* elf.h for Sunplus S+CORE processor
> - Copyright (C) 2005, 2007 Free Software Foundation, Inc.
> + Copyright (C) 2005, 2007, 2010 Free Software Foundation, Inc.
>
> This file is part of GCC.
>
> @@ -95,6 +95,3 @@
>
> #undef ENDFILE_SPEC
> #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
> -
> -/* We support #pragma. */
> -#define HANDLE_SYSV_PRAGMA 1
> Index: gcc/config/arm/arm.h
> ===================================================================
> --- gcc/config/arm/arm.h (revision 166951)
> +++ gcc/config/arm/arm.h (working copy)
> @@ -2097,9 +2097,6 @@ typedef struct
> #define ARM_INDEX_REGISTER_RTX_P(X) \
> (GET_CODE (X) == REG && ARM_REG_OK_FOR_INDEX_P (X))
>
> -/* Define this for compatibility reasons. */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
> /* Specify the machine mode that this machine uses
> for the index in the tablejump instruction. */
> #define CASE_VECTOR_MODE Pmode
> Index: gcc/config/arm/netbsd.h
> ===================================================================
> --- gcc/config/arm/netbsd.h (revision 166951)
> +++ gcc/config/arm/netbsd.h (working copy)
> @@ -1,5 +1,5 @@
> /* NetBSD/arm a.out version.
> - Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008
> + Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008, 2010
> Free Software Foundation, Inc.
> Contributed by Mark Brinicombe (amb@physig.ph.kcl.ac.uk)
>
> @@ -71,8 +71,6 @@
> #undef PTRDIFF_TYPE
> #define PTRDIFF_TYPE "int"
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* We don't have any limit on the length as out debugger is GDB. */
> #undef DBX_CONTIN_LENGTH
>
> Index: gcc/config/pa/pa-hpux.h
> ===================================================================
> --- gcc/config/pa/pa-hpux.h (revision 166951)
> +++ gcc/config/pa/pa-hpux.h (working copy)
> @@ -1,5 +1,5 @@
> /* Definitions of target machine for GNU compiler, for HP-UX.
> - Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008
> + Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008, 2009, 2010
> Free Software Foundation, Inc.
>
> This file is part of GCC.
> @@ -114,12 +114,4 @@ along with GCC; see the file COPYING3.
> #undef TARGET_HPUX_UNWIND_LIBRARY
> #define TARGET_HPUX_UNWIND_LIBRARY 1
>
> -/* Handle #pragma weak and #pragma pack. */
> -#undef HANDLE_SYSV_PRAGMA
> -#define HANDLE_SYSV_PRAGMA
> -
> -/* Define this so we can compile MS code for use with WINE. */
> -#undef HANDLE_PRAGMA_PACK_PUSH_POP
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
> #define MD_UNWIND_SUPPORT "config/pa/hpux-unwind.h"
> Index: gcc/config/mips/elf.h
> ===================================================================
> --- gcc/config/mips/elf.h (revision 166951)
> +++ gcc/config/mips/elf.h (working copy)
> @@ -1,5 +1,5 @@
> /* Target macros for mips*-elf targets.
> - Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007
> + Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007, 2010
> Free Software Foundation, Inc.
>
> This file is part of GCC.
> @@ -49,5 +49,3 @@ along with GCC; see the file COPYING3.
> #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
>
> #define NO_IMPLICIT_EXTERN_C 1
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> Index: gcc/config/mips/sde.h
> ===================================================================
> --- gcc/config/mips/sde.h (revision 166951)
> +++ gcc/config/mips/sde.h (working copy)
> @@ -94,9 +94,6 @@ along with GCC; see the file COPYING3.
> #undef PTRDIFF_TYPE
> #define PTRDIFF_TYPE "long int"
>
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> /* Use standard ELF-style local labels (not '$' as on early Irix). */
> #undef LOCAL_LABEL_PREFIX
> #define LOCAL_LABEL_PREFIX "."
> Index: gcc/config/openbsd.h
> ===================================================================
> --- gcc/config/openbsd.h (revision 166951)
> +++ gcc/config/openbsd.h (working copy)
> @@ -282,12 +282,6 @@ do { \
> /* Storage layout. */
>
>
> -/* bug work around: we don't want to support #pragma weak, but the current
> - code layout needs HANDLE_PRAGMA_WEAK asserted for __attribute((weak)) to
> - work. On the other hand, we don't define HANDLE_PRAGMA_WEAK directly,
> - as this depends on a few other details as well... */
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* Stack is explicitly denied execution rights on OpenBSD platforms. */
> #define ENABLE_EXECUTE_STACK \
> extern void __enable_execute_stack (void *); \
> Index: gcc/config/freebsd.h
> ===================================================================
> --- gcc/config/freebsd.h (revision 166951)
> +++ gcc/config/freebsd.h (working copy)
> @@ -45,9 +45,6 @@ along with GCC; see the file COPYING3.
> #undef LIB_SPEC
> #define LIB_SPEC FBSD_LIB_SPEC
>
> -/* Define this so we can compile MS code for use with WINE. */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
> /************************[ Target stuff ]***********************************/
>
> /* All FreeBSD Architectures support the ELF object file format. */
> Index: gcc/config/mmix/mmix.h
> ===================================================================
> --- gcc/config/mmix/mmix.h (revision 166951)
> +++ gcc/config/mmix/mmix.h (working copy)
> @@ -887,8 +887,6 @@ typedef struct { int regs; int lib; } CU
>
> #define NO_IMPLICIT_EXTERN_C
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
> /* These are checked. */
> #define DOLLARS_IN_IDENTIFIERS 0
> #define NO_DOLLAR_IN_LABEL
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-11-20 10:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-20 9:34 Enable #pragma pack with push and pop unconditionally Joseph S. Myers
2010-11-20 12:40 ` Richard Guenther
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).