https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
Andrew Pinski changed:
What|Removed |Added
See Also||https://gcc.gnu.org/bugzill
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
Andrew Pinski changed:
What|Removed |Added
Last reconfirmed||2021-09-06
Assignee|unassigned
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
Andrew Pinski changed:
What|Removed |Added
See Also||https://gcc.gnu.org/bugzill
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #10 from Martin Sebor ---
Yes, I've also come to realize that the surprising signed char range is a red
herring since the abort in the following test case is also not optimized away.
void f (_Bool i)
{
char d [3];
const char *p
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #9 from Marc Glisse ---
I don't see what "signed" has to do with it.
void f (unsigned char i)
{
char d [1260];
const char *p = &d[130];
p += i;
if (p < d + 2 || d + 757 < p)
__builtin_abort ();
}
We don't optimize thi
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #8 from Andrew Pinski ---
(In reply to Martin Sebor from comment #7)
> Here's what I see in GDB after get_range_info returns to update_value_range:
>
> (gdb) p rtype
> $39 = VR_ANTI_RANGE
> (gdb) p min
> $40 = { = {val = {128, 180617
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #7 from Martin Sebor ---
Here's what I see in GDB after get_range_info returns to update_value_range:
(gdb) p rtype
$39 = VR_ANTI_RANGE
(gdb) p min
$40 = { = {val = {128, 18061790, 140737235530016}, len = 1,
precision = 64}, static i
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #6 from Andrew Pinski ---
(In reply to Martin Sebor from comment #5)
> My other point (one somewhat related to bug 77898) is that it's confusing to
> represent the VR_RANGE [-128, 127] of the signed char variable as a
> VR_ANTI_RANGE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
Martin Sebor changed:
What|Removed |Added
Status|RESOLVED|UNCONFIRMED
Resolution|INVALID
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
Richard Biener changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #3 from Martin Sebor ---
The offset is this in plus_stmt_object_size() in tree-object-size.c:
unit size
align 64 symtab 0 alias set -1 canonical type 0x70da41f8 precision
64 min max >
static visited
de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #2 from Andrew Pinski ---
So to fix this in reality is to change how POINTER_PLUS_EXPR takes an unsigned
integer to be a signed integer. But this will take many extra issues and need
to be done though out the compiler.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77899
--- Comment #1 from Andrew Pinski ---
This is the complex part because size_type is unsigned so the range converting
from signed [-127, 128] to unsigned is ~[128, 18446744073709551487]
13 matches
Mail list logo