--
Bug 21021 depends on bug 21024, which changed state.
Bug 21024 Summary: fold generates a comparison of two operands whose types do
not match
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21024
What|Old Value |New Value
--- Additional Comments From kazu at cs dot umass dot edu 2005-04-15 01:31
---
Just checked in a workaround patch.
For a real fix, keep an eye on PR 21024.
--
What|Removed |Added
---
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-04-15
01:29 ---
Subject: Bug 21021
CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED] 2005-04-15 01:29:44
Modified files:
gcc: ChangeLog tree-vrp.c
gcc/tes
--- Additional Comments From kazu at cs dot umass dot edu 2005-04-14 23:07
---
Patch posted:
http://gcc.gnu.org/ml/gcc-patches/2005-04/msg01668.html
--
What|Removed |Added
--
What|Removed |Added
BugsThisDependsOn||21024
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21021
--- Additional Comments From kazu at cs dot umass dot edu 2005-04-14 15:51
---
Before VRP (even before ASSERT_EXPR insertion), we have
const void * r;
unsigned int D.1157;
void * D.1156;
:
:
if (r_3 >= D.1157_5) goto ; else goto ;
Note that we already have a type-mismatch
--- Additional Comments From kazu at cs dot umass dot edu 2005-04-14 14:56
---
Reduced down to:
extern void *bar (void);
int
foo (unsigned int *p, unsigned int *q)
{
const void *r = bar ();
if (r >= (const void *) *p
&& r < (const void *) *q)
return 1;
return 0;
}
-
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-04-14
14:54 ---
Here is a testcase which does not use builtins:
struct link_map {
struct link_map *next;
unsigned int start, end;
};
void *f();
void
foo (struct link_map **array, long int cnt)
{
struct link_map *l;
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-04-14
14:52 ---
Confirmed, with Kazu's reduced testcase on i686-pc-linux.
--
What|Removed |Added