--- Comment #26 from bonzini at gnu dot org 2009-01-22 08:08 ---
This is a separate bug. The reduced testcase does not have a single && or || so
it probably existed also before my patch.
It is now bug 38932.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38572
--- Comment #25 from regehr at cs dot utah dot edu 2009-01-22 05:06 ---
I get this using r143561 on Ubuntu Hardy on x86:
reg...@john-home:~/volatile/tmp126$ current-gcc -O3 -c small.c
small.c: In function bar:
small.c:22: internal compiler error: in set_value_range, at tree-vrp.c:398
--- Comment #24 from bonzini at gnu dot org 2008-12-30 10:39 ---
patch committed -- bug may be latent on 4.3, but there is no known testcase.
--
bonzini at gnu dot org changed:
What|Removed |Added
---
--- Comment #23 from bonzini at gnu dot org 2008-12-30 10:38 ---
Fixed. However, you should check if the code is valid C++ at all, because
out-of-range enum values are handled differently in C and C++ (the bug stemmed
from the fact that op was set to a value that is beyond what the C++
--- Comment #22 from bonzini at gnu dot org 2008-12-30 10:38 ---
Subject: Bug 38572
Author: bonzini
Date: Tue Dec 30 10:36:39 2008
New Revision: 142962
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142962
Log:
2008-12-30 Paolo Bonzini
PR tree-optimization/38572
--- Comment #21 from bonzini at gnu dot org 2008-12-22 09:30 ---
Created an attachment (id=16961)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16961&action=view)
patch being tested
Testing a patch.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38572
--- Comment #20 from bonzini at gnu dot org 2008-12-22 09:05 ---
This is a latent bug in the handling of out-of-bounds values. It happens
because a value changes from [256, 256] to [256, 257]. VRP then forces the
upper bound to the max-value of the type, generating the invalid range [25
--- Comment #19 from bonzini at gnu dot org 2008-12-22 08:52 ---
Smaller testcase, without uninitialized variables too:
enum JSOp
{
JSOP_GETELEM = 5,
JSOP_LIMIT
};
extern void g ();
void
f (char *pc, char *endpc, int format, char ***fp, enum JSOp op)
{
while (pc <= endpc)
{
--- Comment #18 from bonzini at gnu dot org 2008-12-19 06:05 ---
mine.
--
bonzini at gnu dot org changed:
What|Removed |Added
AssignedTo|unassigned at gcc dot gnu
--- Comment #17 from pinskia at gcc dot gnu dot org 2008-12-19 01:49
---
(In reply to comment #16)
> Enum looks different in C++.
Yes they are different because of the way C++ talks about out of range values
and such.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38572
--- Comment #16 from hjl dot tools at gmail dot com 2008-12-19 01:40
---
C compiler doesn't crash:
(gdb) f 0
#0 set_value_range (vr=0x15e7bf40, t=VR_RANGE, min=0x2af40ef86fc0,
max=0x2af40ef86fc0, equiv=0x0) at ../../src/gcc/tree-vrp.c:398
398 gcc_assert (cmp == 0 || cmp
--- Comment #15 from pinskia at gcc dot gnu dot org 2008-12-19 01:19
---
(In reply to comment #14)
> Doesn't --enable-checking=assert turn on gcc_assert?
Yes but not when that code is wrapped with:
#if defined ENABLE_CHECKING
:)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3857
--- Comment #14 from hjl dot tools at gmail dot com 2008-12-18 23:28
---
(In reply to comment #12)
> (In reply to comment #10)
> > If gcc is configured with --enable-checking=assert, you won't see the bug.
>
> Well that is called real checking code :).
>
There are
397 cmp = c
--- Comment #13 from hjl dot tools at gmail dot com 2008-12-18 23:26
---
Testcase in comment 11 also fails on Linux/x86-64.
--
hjl dot tools at gmail dot com changed:
What|Removed |Added
--- Comment #12 from pinskia at gcc dot gnu dot org 2008-12-18 23:21
---
(In reply to comment #10)
> If gcc is configured with --enable-checking=assert, you won't see the bug.
Well that is called real checking code :).
--
pinskia at gcc dot gnu dot org changed:
What
--- Comment #10 from hjl dot tools at gmail dot com 2008-12-18 23:20
---
It is caused by revision 140288:
http://gcc.gnu.org/ml/gcc-cvs/2008-09/msg00447.html
If gcc is configured with --enable-checking=assert, you won't see the bug.
--
hjl dot tools at gmail dot com changed:
--- Comment #11 from pinskia at gcc dot gnu dot org 2008-12-18 23:20
---
Reduced testcase:
enum JSOp {
JSOP_GETELEM = 5,
JSOP_LIMIT
} ;
typedef struct JSFrameRegs {
unsigned char *pc;
} JSFrameRegs;
struct JSStackFrame {
JSFrameRegs *regs;
};
int
f( unsigned char *pc, enum JS
--- Comment #9 from pinskia at gcc dot gnu dot org 2008-12-18 20:24 ---
(In reply to comment #8)
> (In reply to comment #7)
> > gcc version 4.4.0 20081217 (experimental) [trunk revision 142793] (GCC)
>
> It ICEs for me with gcc version 4.4.0 20081216 (experimental) [trunk revision
> 14
--- Comment #8 from pinskia at gcc dot gnu dot org 2008-12-18 20:23 ---
(In reply to comment #7)
> gcc version 4.4.0 20081217 (experimental) [trunk revision 142793] (GCC)
It ICEs for me with gcc version 4.4.0 20081216 (experimental) [trunk revision
142782] (GCC) on i386-darwin8.11.
--- Comment #7 from hjl dot tools at gmail dot com 2008-12-18 20:20 ---
(In reply to comment #5)
> Created an attachment (id=16938)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16938&action=view) [edit]
> gzipped preprocessed source of file actually causing the problem
>
> Attach
--- Comment #6 from pinskia at gcc dot gnu dot org 2008-12-18 20:18 ---
Reducing ...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38572
--- Comment #5 from bero at arklinux dot org 2008-12-18 20:10 ---
Created an attachment (id=16938)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16938&action=view)
gzipped preprocessed source of file actually causing the problem
Attaching correct preprocessed source
# g++ -o test
--- Comment #4 from bero at arklinux dot org 2008-12-18 20:08 ---
Sorry, I misread the error message - I saw the warnings about jsparse.cpp, but
the actual ice occurs in jsopcode.cpp
--
bero at arklinux dot org changed:
What|Removed |Added
--- Comment #3 from hjl dot tools at gmail dot com 2008-12-18 19:48 ---
I don't see any changes between revision 142782 and revision 142793
which may impact this. How is your gcc configured?
--
hjl dot tools at gmail dot com changed:
What|Removed |
--- Comment #2 from hjl dot tools at gmail dot com 2008-12-18 19:45 ---
Works for me as of revision 142793.
--
hjl dot tools at gmail dot com changed:
What|Removed |Added
--- Comment #1 from bero at arklinux dot org 2008-12-18 19:26 ---
Created an attachment (id=16937)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16937&action=view)
gzipped preprocessed source
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38572
26 matches
Mail list logo