* [Commited] Fix PR 32988 ICE in build2_stat with POINTER_PLUS_EXP
@ 2007-08-06 3:21 Andrew Pinski
0 siblings, 0 replies; only message in thread
From: Andrew Pinski @ 2007-08-06 3:21 UTC (permalink / raw)
To: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 750 bytes --]
Hi,
The problem here is that sizetype is compatiable with an enum type
but build2_stat is overly rejecting types other than INTEGER_TYPEs.
Tthe normal CFG verifier did not check if the second operand was an
INTEGER_TYPE, just if it was compatiable to sizetype. The check for
INTEGER_TYPE in build2_stat is too strict, it really should be
INTEGRAL_TYPE_P instead. The reason behind the check in build2_stat
was because at one point, it would not check for compatibility with
sizetype.
Committed as obvious after a bootstrap/test on i386-apple-darwin8.10
with no regressions.
Thanks,
Andrew Pinski
ChangeLog:
* tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
for INTEGRAL_TYPE_P.
* gcc.c-torture/compile/pr32988.c: New test.
[-- Attachment #2: fixpr32988.diff.txt --]
[-- Type: text/plain, Size: 1339 bytes --]
Index: tree.c
===================================================================
--- tree.c (revision 127226)
+++ tree.c (working copy)
@@ -3077,7 +3077,7 @@ build2_stat (enum tree_code code, tree t
if (code == POINTER_PLUS_EXPR && arg0 && arg1 && tt)
gcc_assert (POINTER_TYPE_P (tt) && POINTER_TYPE_P (TREE_TYPE (arg0))
- && TREE_CODE (TREE_TYPE (arg1)) == INTEGER_TYPE
+ && INTEGRAL_TYPE_P (TREE_TYPE (arg1))
&& useless_type_conversion_p (sizetype, TREE_TYPE (arg1)));
t = make_node_stat (code PASS_MEM_STAT);
Index: testsuite/gcc.c-torture/compile/pr32988.c
===================================================================
--- testsuite/gcc.c-torture/compile/pr32988.c (revision 0)
+++ testsuite/gcc.c-torture/compile/pr32988.c (revision 0)
@@ -0,0 +1,20 @@
+enum zone_type {
+ ZONE_DMA,
+ ZONE_NORMAL,
+ ZONE_MOVABLE,
+ MAX_NR_ZONES
+};
+static unsigned long arch_zone_lowest_possible_pfn[MAX_NR_ZONES];
+static unsigned long arch_zone_highest_possible_pfn[MAX_NR_ZONES];
+void free_area_init_nodes(unsigned long *max_zone_pfn)
+{
+ enum zone_type i;
+ for (i = 1; i < MAX_NR_ZONES; i++)
+ {
+ if (i == ZONE_MOVABLE)
+ continue;
+ unsigned long _x = max_zone_pfn[i];
+ unsigned long _y = arch_zone_lowest_possible_pfn[i];
+ arch_zone_highest_possible_pfn[i] = _x > _y ? _x : _y;
+ }
+}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-08-06 3:21 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-06 3:21 [Commited] Fix PR 32988 ICE in build2_stat with POINTER_PLUS_EXP Andrew Pinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).