* lib/target-supports.exp
(check_effective_target_pcc_bitfield_type_matters): New proc. * gcc.dg/bitfld-3.c: Gate on target pcc_bitfield_type_matters. From-SVN: r106375
This commit is contained in:
parent
aa5c7673b8
commit
edc5687ec1
|
@ -1,5 +1,9 @@
|
|||
2005-11-02 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* lib/target-supports.exp
|
||||
(check_effective_target_pcc_bitfield_type_matters): New proc.
|
||||
* gcc.dg/bitfld-3.c: Gate on target pcc_bitfield_type_matters.
|
||||
|
||||
* lib/target-supports.exp (check_effective_default_packed): New proc.
|
||||
* g++.dg/ext/packed3.C, g++.dg/ext/packed8.C, g++.dg/other/crash-4.C:
|
||||
Gate expected errors on target ! default_packed.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Test for bitfield alignment in structs and unions. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-do run { target pcc_bitfield_type_matters } } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
|
|
@ -344,6 +344,46 @@ proc check_effective_target_default_packed { } {
|
|||
return $et_default_packed_saved
|
||||
}
|
||||
|
||||
# Return 1 if target has PCC_BITFIELD_TYPE_MATTERS defined. See
|
||||
# documentation, where the test also comes from.
|
||||
|
||||
proc check_effective_target_pcc_bitfield_type_matters { } {
|
||||
global et_pcc_bitfield_type_matters_saved
|
||||
global et_pcc_bitfield_type_matters_target_name
|
||||
|
||||
if { ![info exists et_pcc_bitfield_type_matters_target_name] } {
|
||||
set et_pcc_bitfield_type_matters_target_name ""
|
||||
}
|
||||
|
||||
# If the target has changed since we set the cached value, clear it.
|
||||
set current_target [current_target_name]
|
||||
if { $current_target != $et_pcc_bitfield_type_matters_target_name } {
|
||||
verbose "check_effective_target_pcc_bitfield_type_matters: `$et_pcc_bitfield_type_matters_target_name'" 2
|
||||
set et_pcc_bitfield_type_matters_target_name $current_target
|
||||
if [info exists et_pcc_bitfield_type_matters_saved] {
|
||||
verbose "check_effective_target_pcc_bitfield_type_matters: removing cached result" 2
|
||||
unset et_pcc_bitfield_type_matters_saved
|
||||
}
|
||||
}
|
||||
|
||||
if [info exists et_pcc_bitfield_type_matters_saved] {
|
||||
verbose "check_effective_target_pcc_bitfield_type_matters: using cached result" 2
|
||||
} else {
|
||||
verbose "check_effective_target_pcc_bitfield_type_matters: compiling source" 2
|
||||
|
||||
# PCC_BITFIELD_TYPE_MATTERS isn't just about unnamed or empty
|
||||
# bitfields, but let's stick to the example code from the docs.
|
||||
set et_pcc_bitfield_type_matters_saved \
|
||||
[string match "" [get_compiler_messages pcc_bitfield_type_matters assembly {
|
||||
struct foo1 { char x; char :0; char y; };
|
||||
struct foo2 { char x; int :0; char y; };
|
||||
int s[sizeof (struct foo1) != sizeof (struct foo2) ? 1 : -1];
|
||||
} ]]
|
||||
}
|
||||
verbose "check_effective_target_pcc_bitfield_type_matters: returning $et_pcc_bitfield_type_matters_saved" 2
|
||||
return $et_pcc_bitfield_type_matters_saved
|
||||
}
|
||||
|
||||
# Return 1 if -fpic and -fPIC are supported, as in no warnings or errors
|
||||
# emitted, 0 otherwise. Whether a shared library can actually be built is
|
||||
# out of scope for this test.
|
||||
|
|
Loading…
Reference in New Issue