Message ID | 20210525064405.1347426-1-aldyh@redhat.com |
---|---|
State | New |
Headers | show |
Series | Fix selftest for targets where short and int are the same size. | expand |
On 5/25/2021 12:44 AM, Aldy Hernandez wrote: > avr-elf seems to use HImode for both integer_type_node and > signed_char_type_node, which is causing the check for different sized > VARYING ranges to fail. > > I've fixed this by using a char which I think should always be smaller than an > int. Is there a preferred way of fixing this? Perhaps build_nonstandard_integer > or __attribute__((mode(XX)))? > > Tested on an x86-64 x avr-elf. > > gcc/ChangeLog: > > * value-range.cc (range_tests_legacy): Use signed char instead > of signed short. As you note, I wonder if we should just creating our own types for this test. In fact I wonder if that should be considered best practice for these tests. Assumptions about the underlying sizes of the standard types has been slightly problematical for the range self-tests. The alternate approach would be to check the underlying sizes/signedness and skip the tests when they don't give us what we need. But that seems inferior to just creating a suitable type. Jeff ps. xstormy16-elf seems to be failing in the same way. I'll assume it's the same problem ;-)
Ok, let's use build_nonstandard_integer_type which works for everyone and gets you unblocked. Pushed. Aldy On Tue, May 25, 2021 at 3:15 PM Jeff Law <jeffreyalaw@gmail.com> wrote: > > > > On 5/25/2021 12:44 AM, Aldy Hernandez wrote: > > avr-elf seems to use HImode for both integer_type_node and > > signed_char_type_node, which is causing the check for different sized > > VARYING ranges to fail. > > > > I've fixed this by using a char which I think should always be smaller than an > > int. Is there a preferred way of fixing this? Perhaps build_nonstandard_integer > > or __attribute__((mode(XX)))? > > > > Tested on an x86-64 x avr-elf. > > > > gcc/ChangeLog: > > > > * value-range.cc (range_tests_legacy): Use signed char instead > > of signed short. > As you note, I wonder if we should just creating our own types for this > test. In fact I wonder if that should be considered best practice for > these tests. Assumptions about the underlying sizes of the standard > types has been slightly problematical for the range self-tests. > > The alternate approach would be to check the underlying sizes/signedness > and skip the tests when they don't give us what we need. But that seems > inferior to just creating a suitable type. > > Jeff > > ps. xstormy16-elf seems to be failing in the same way. I'll assume > it's the same problem ;-) >
On 5/25/2021 10:36 AM, Aldy Hernandez wrote: > Ok, let's use build_nonstandard_integer_type which works for everyone > and gets you unblocked. Just to be clear, I'm not blocked on xstormy16. The upstream GCC tester flagged the failure and I did enough triage to blame you :-) In my day job I'm working in another tree, so you can break the trunk willy-nilly and it won't block me. jeff
diff --git a/gcc/value-range.cc b/gcc/value-range.cc index 8d7b46c0239..5eefd5ff174 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -2251,10 +2251,10 @@ range_tests_legacy () // VARYING of different sizes should not be equal. int_range_max r0 (integer_type_node); - int_range_max r1 (short_integer_type_node); + int_range_max r1 (signed_char_type_node); ASSERT_TRUE (r0 != r1); value_range vr0 (integer_type_node); - int_range_max vr1 (short_integer_type_node); + int_range_max vr1 (signed_char_type_node); ASSERT_TRUE (vr0 != vr1); }