diff options
author | Mark Mitchell <mark@codesourcery.com> | 2007-02-26 15:53:51 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2007-02-26 15:53:51 +0000 |
commit | b2f4bed8376bb0fd12110ca1eb25d6d5e5b6fb24 (patch) | |
tree | bc456dae4427f9afc91988189cd6ee26800382a0 /gcc/c-common.c | |
parent | 6f7f72f999c4084fb561ad6f0f729e73173a5aa8 (diff) | |
download | gcc-b2f4bed8376bb0fd12110ca1eb25d6d5e5b6fb24.zip gcc-b2f4bed8376bb0fd12110ca1eb25d6d5e5b6fb24.tar.gz gcc-b2f4bed8376bb0fd12110ca1eb25d6d5e5b6fb24.tar.bz2 |
output.h (assemble_addr_to_section): Declare.
* output.h (assemble_addr_to_section): Declare.
(get_cdtor_priority_section): Likewise.
* varasm.c (assemble_addr_to_section): New function.
(get_cdtor_priority_section): Likewise.
(default_named_section_asm_out_destructor): Use them.
(destor_dtor_section_asm_out_destructor): Likewise.
(default_named_section_asm_out_constructor): Likewise.
(default_ctor_section_asm_out_constructor): Likewise.
* config.gcc (*-*-vxworks*): Include vxworks.o.
* config/t-vxworks (vxworks.o): New target.
* config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
(TARGET_ASM_CONSTRUCTOR): Define.
(TARGET_ASM_DESTRUCTOR): Likewise.
(vxworks_asm_out_constructor): Declare.
(vxworks_asm_out_destructor): Likewise.
* c-common.c (get_priority): Check that we have not just an
INTEGER_CST, but an integer constant with integeral type.
* gcc.dg/vxworks/vxworks.exp: New file.
* gcc.dg/vxworks/initpri1.c: Likewise.
* gcc.dg/vxworks/initpri2.c: Likewise.
* gcc.dg/initpri2.c: Add more tests.
* g++.dg/special/initpri2.C: Likewise.
From-SVN: r122335
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index 4eb0265..6d1606c 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -4687,11 +4687,14 @@ static priority_type get_priority (tree args, bool is_destructor) { HOST_WIDE_INT pri; + tree arg; if (!args) return DEFAULT_INIT_PRIORITY; - - if (!host_integerp (TREE_VALUE (args), /*pos=*/0)) + + arg = TREE_VALUE (args); + if (!host_integerp (arg, /*pos=*/0) + || !INTEGRAL_TYPE_P (TREE_TYPE (arg))) goto invalid; pri = tree_low_cst (TREE_VALUE (args), /*pos=*/0); |