* PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
@ 2007-03-31 19:50 Diego Novillo
2007-03-31 20:01 ` Mark Mitchell
2007-04-05 2:02 ` Mike Stump
0 siblings, 2 replies; 10+ messages in thread
From: Diego Novillo @ 2007-03-31 19:50 UTC (permalink / raw)
To: gcc-patches, Mark Mitchell
[-- Attachment #1: Type: text/plain, Size: 1277 bytes --]
As discussed in http://gcc.gnu.org/ml/gcc/2007-03/msg01153.html, the C++
front end is building ADDR_EXPRs for vtbl entries but is not setting
TREE_ADDRESSABLE consistently.
This is causing the setup routines in alias analysis to ignore these
variables. But during analysis, we add them to points-to and alias
sets. Since the variables had been initially ignored, they don't get
marked for renaming, causing an ICE during conversion to SSA.
The approach I tried initially is to make the aliaser very strict in
asserting the addressability of every symbol added to an alias set.
This uncovers various inconsistencies in C, C++ and Java FEs. So, the
idea is to make everything consistent by forcing build1() to set
TREE_ADDRESSABLE every time it's asked to build ADDR_EXPR. This caused
some controversy, so I will not attempt that on 4.2.
The minimal fix that I found for 4.2 is along the lines of what Mark and
Jason suggested. I did have to try a variation of Mark's suggestion of
building a NOP_EXPR in dfs_accumulate_vtbl_inits, because that was
causing ICEs elsewhere in other functions not expecting a NOP_EXPR.
Bootstrapped on i686, x86_64, ppc64 and ia64.
OK for 4.2? For 4.3 I will use the sane approach of forcing
TREE_ADDRESSABLE for every ADDR_EXPR built.
[-- Attachment #2: 20070330-29585.diff --]
[-- Type: text/x-patch, Size: 1274 bytes --]
2007-03-30 Diego Novillo <dnovillo@redhat.com>
Mark Mitchell <mark@codesourcery.com>
PR 29585
* class.c (dfs_accumulate_vtbl_inits): Use build_address
to build the vtbl entry.
testsuite/ChangeLog
PR 29585
* g++.dg/tree-ssa/pr29585.C: New test.
Index: testsuite/g++.dg/tree-ssa/pr29585.C
===================================================================
--- testsuite/g++.dg/tree-ssa/pr29585.C (revision 0)
+++ testsuite/g++.dg/tree-ssa/pr29585.C (revision 0)
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+class ios_base{};
+struct basic_ostream : virtual ios_base{};
+namespace
+{
+ struct Nullostream : basic_ostream{};
+}
+class In
+{
+ In ();
+ Nullostream nullout;
+};
+In::In (){}
Index: cp/class.c
===================================================================
--- cp/class.c (revision 123332)
+++ cp/class.c (working copy)
@@ -7101,7 +7101,7 @@ dfs_accumulate_vtbl_inits (tree binfo,
/* Figure out the position to which the VPTR should point. */
vtbl = TREE_PURPOSE (l);
- vtbl = build1 (ADDR_EXPR, vtbl_ptr_type_node, vtbl);
+ vtbl = build_address (vtbl);
index = size_binop (PLUS_EXPR,
size_int (non_fn_entries),
size_int (list_length (TREE_VALUE (l))));
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-03-31 19:50 PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries Diego Novillo
@ 2007-03-31 20:01 ` Mark Mitchell
2007-04-05 2:02 ` Mike Stump
1 sibling, 0 replies; 10+ messages in thread
From: Mark Mitchell @ 2007-03-31 20:01 UTC (permalink / raw)
To: Diego Novillo; +Cc: gcc-patches
Diego Novillo wrote:
> The approach I tried initially is to make the aliaser very strict in
> asserting the addressability of every symbol added to an alias set.
> This uncovers various inconsistencies in C, C++ and Java FEs. So, the
> idea is to make everything consistent by forcing build1() to set
> TREE_ADDRESSABLE every time it's asked to build ADDR_EXPR. This caused
> some controversy, so I will not attempt that on 4.2.
FWIW, I think what you're suggesting is The Right Thing for 4.3. In the
old days, the addressability of things whose addresses were not really
needed did impact optimization a lot, but I don't see that this should
be true with our new infrastructure. Look, if you take its address, it
must be addressable. :-p
> 2007-03-30 Diego Novillo <dnovillo@redhat.com>
> Mark Mitchell <mark@codesourcery.com>
>
> PR 29585
> * class.c (dfs_accumulate_vtbl_inits): Use build_address
> to build the vtbl entry.
>
>
> testsuite/ChangeLog
>
> PR 29585
> * g++.dg/tree-ssa/pr29585.C: New test.
OK, and thanks!!
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-03-31 19:50 PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries Diego Novillo
2007-03-31 20:01 ` Mark Mitchell
@ 2007-04-05 2:02 ` Mike Stump
2007-04-11 1:06 ` Mike Stump
1 sibling, 1 reply; 10+ messages in thread
From: Mike Stump @ 2007-04-05 2:02 UTC (permalink / raw)
To: Diego Novillo; +Cc: gcc-patches, Mark Mitchell
On Mar 31, 2007, at 11:03 AM, Diego Novillo wrote:
> 2007-03-30 Diego Novillo <dnovillo@redhat.com>
> Mark Mitchell <mark@codesourcery.com>
>
> PR 29585
> * class.c (dfs_accumulate_vtbl_inits): Use build_address
> to build the vtbl entry.
I think this patch breaks:
FAIL: g++.old-deja/g++.mike/p4736b.C (internal compiler error)
FAIL: g++.old-deja/g++.mike/p4736b.C (test for excess errors)
on powerpc-apple-darwin:
/Volumes/mrs3/net/gcc-4.2-fsf/gcc/gcc/testsuite/g++.old-deja/g++.mike/
p4736b.C:
In function 'int main()':
/Volumes/mrs3/net/gcc-4.2-fsf/gcc/gcc/testsuite/g++.old-deja/g++.mike/
p4736b.C:41:
internal compiler error: in convert_memory_address, at explow.c:319
:-(
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-04-05 2:02 ` Mike Stump
@ 2007-04-11 1:06 ` Mike Stump
2007-04-11 1:13 ` Mark Mitchell
2007-04-11 1:15 ` Eric Christopher
0 siblings, 2 replies; 10+ messages in thread
From: Mike Stump @ 2007-04-11 1:06 UTC (permalink / raw)
To: gcc-patches@gcc.gnu.org Patches; +Cc: Diego Novillo, Mark Mitchell
On Apr 4, 2007, at 7:00 PM, Mike Stump wrote:
> On Mar 31, 2007, at 11:03 AM, Diego Novillo wrote:
>> 2007-03-30 Diego Novillo <dnovillo@redhat.com>
>> Mark Mitchell <mark@codesourcery.com>
>>
>> PR 29585
>> * class.c (dfs_accumulate_vtbl_inits): Use build_address
>> to build the vtbl entry.
>
> I think this patch breaks:
>
> FAIL: g++.old-deja/g++.mike/p4736b.C (internal compiler error)
> FAIL: g++.old-deja/g++.mike/p4736b.C (test for excess errors)
>
> on powerpc-apple-darwin:
>
> /Volumes/mrs3/net/gcc-4.2-fsf/gcc/gcc/testsuite/g++.old-deja/g+
> +.mike/p4736b.C:
> In function 'int main()':
> /Volumes/mrs3/net/gcc-4.2-fsf/gcc/gcc/testsuite/g++.old-deja/g+
> +.mike/p4736b.C:41:
> internal compiler error: in convert_memory_address, at explow.c:319
>
> :-(
Fixed by the below. I'll check this in tomorrow unless a maintainer
of the code thinks it's not obvious or wrong, pretty sure it's better
than the status quo. This fixes it as the mode on the type of the
vtbl goes from being BLKmode back to being what it was before (SImode
on my machine). The wrong mode on the decl causes
convert_memory_address called from memory_address to abort. The mode
was taken in expand_one_stack_var_at:
x = gen_rtx_MEM (DECL_MODE (decl), x);
The reason some people didn't see this is the check only happens when !
POINTERS_EXTEND_UNSIGNED.
2007-04-10 Mike Stump <mrs@apple.com>
* class.c (dfs_accumulate_vtbl_inits): Fix regressions introduced
by fix for PR 29585.
2007-04-10 Mike Stump <mrs@apple.com>
* g++.dg/tree-ssa/pr29585.C: Don't die on an expected warning.
This is a release blocker for 4.2.0.
Doing diffs in .:
--- ./cp/class.c.~1~ 2007-04-04 19:37:15.000000000 -0700
+++ ./cp/class.c 2007-04-10 17:34:46.000000000 -0700
@@ -7108,7 +7108,7 @@ dfs_accumulate_vtbl_inits (tree binfo,
index = size_binop (MULT_EXPR,
TYPE_SIZE_UNIT (vtable_entry_type),
index);
- vtbl = build2 (PLUS_EXPR, TREE_TYPE (vtbl), vtbl, index);
+ vtbl = build2 (PLUS_EXPR, vtbl_ptr_type_node, vtbl, index);
}
if (ctor_vtbl_p)
--- ./testsuite/g++.dg/tree-ssa/pr29585.C.~1~ 2007-04-04
19:37:14.000000000 -0700
+++ ./testsuite/g++.dg/tree-ssa/pr29585.C 2007-04-10
17:44:53.000000000 -0700
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -w" } */
class ios_base{};
struct basic_ostream : virtual ios_base{};
--------------
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-04-11 1:06 ` Mike Stump
@ 2007-04-11 1:13 ` Mark Mitchell
2007-04-11 2:02 ` Mike Stump
2007-04-11 1:15 ` Eric Christopher
1 sibling, 1 reply; 10+ messages in thread
From: Mark Mitchell @ 2007-04-11 1:13 UTC (permalink / raw)
To: Mike Stump; +Cc: gcc-patches@gcc.gnu.org Patches, Diego Novillo
Mike Stump wrote:
> --- ./cp/class.c.~1~ 2007-04-04 19:37:15.000000000 -0700
> +++ ./cp/class.c 2007-04-10 17:34:46.000000000 -0700
> @@ -7108,7 +7108,7 @@ dfs_accumulate_vtbl_inits (tree binfo,
> index = size_binop (MULT_EXPR,
> TYPE_SIZE_UNIT (vtable_entry_type),
> index);
> - vtbl = build2 (PLUS_EXPR, TREE_TYPE (vtbl), vtbl, index);
> + vtbl = build2 (PLUS_EXPR, vtbl_ptr_type_node, vtbl, index);
That does not look to be type-correct at the tree level; the type of
VTBL + INDEX should be the same as the type of VTBL. You should
probably be using fold_convert to add the conversion, after the addition.
> I'll check this in tomorrow unless a maintainer of the code thinks it's not obvious or wrong, pretty sure it's better than the status quo.
I think that you should consider recalibrating your obviousness meter.
Thanks,
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-04-11 1:06 ` Mike Stump
2007-04-11 1:13 ` Mark Mitchell
@ 2007-04-11 1:15 ` Eric Christopher
1 sibling, 0 replies; 10+ messages in thread
From: Eric Christopher @ 2007-04-11 1:15 UTC (permalink / raw)
To: Mike Stump; +Cc: gcc-patches@gcc.gnu.org Patches, Diego Novillo, Mark Mitchell
>
> 2007-04-10 Mike Stump <mrs@apple.com>
>
> * class.c (dfs_accumulate_vtbl_inits): Fix regressions introduced
> by fix for PR 29585.
Uh, how about a better changelog entry? You know, one that says what
you did instead of why? :)
-eric
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-04-11 1:13 ` Mark Mitchell
@ 2007-04-11 2:02 ` Mike Stump
2007-04-11 2:18 ` Mark Mitchell
0 siblings, 1 reply; 10+ messages in thread
From: Mike Stump @ 2007-04-11 2:02 UTC (permalink / raw)
To: Mark Mitchell; +Cc: gcc-patches@gcc.gnu.org Patches, Diego Novillo
On Apr 10, 2007, at 6:13 PM, Mark Mitchell wrote:
> Mike Stump wrote:
>
>> --- ./cp/class.c.~1~ 2007-04-04 19:37:15.000000000 -0700
>> +++ ./cp/class.c 2007-04-10 17:34:46.000000000 -0700
>> @@ -7108,7 +7108,7 @@ dfs_accumulate_vtbl_inits (tree binfo,
>> index = size_binop (MULT_EXPR,
>> TYPE_SIZE_UNIT (vtable_entry_type),
>> index);
>> - vtbl = build2 (PLUS_EXPR, TREE_TYPE (vtbl), vtbl, index);
>> + vtbl = build2 (PLUS_EXPR, vtbl_ptr_type_node, vtbl, index);
>
> That does not look to be type-correct at the tree level; the type of
> VTBL + INDEX should be the same as the type of VTBL. You should
> probably be using fold_convert to add the conversion, after the
> addition.
Yeah, tried that, it didn't work. If you really want to do that, then
this would be a step in that direction. I'll let you judge if you
want to start down this path:
Doing diffs in .:
--- ./cp/class.c.~1~ 2007-04-04 19:37:15.000000000 -0700
+++ ./cp/class.c 2007-04-10 18:51:27.000000000 -0700
@@ -6322,6 +6322,7 @@ get_vtbl_decl_for_binfo (tree binfo)
tree decl;
decl = BINFO_VTABLE (binfo);
+ STRIP_NOPS (decl);
if (decl && TREE_CODE (decl) == PLUS_EXPR)
{
gcc_assert (TREE_CODE (TREE_OPERAND (decl, 0)) == ADDR_EXPR);
@@ -7109,6 +7110,7 @@ dfs_accumulate_vtbl_inits (tree binfo,
TYPE_SIZE_UNIT (vtable_entry_type),
index);
vtbl = build2 (PLUS_EXPR, TREE_TYPE (vtbl), vtbl, index);
+ vtbl = convert (vtbl_ptr_type_node, vtbl);
}
if (ctor_vtbl_p)
--- ./testsuite/g++.dg/tree-ssa/pr29585.C.~1~ 2007-04-04
19:37:14.000000000 -0700
+++ ./testsuite/g++.dg/tree-ssa/pr29585.C 2007-04-10
17:44:53.000000000 -0700
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -w" } */
class ios_base{};
struct basic_ostream : virtual ios_base{};
--------------
I've been burned more often by changing the shape of the tree days
before release than I have by being type unsafe in the manner of the
previous patch.
Which path do you think is safer for 4.2 given where we are in the
release cycle?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-04-11 2:02 ` Mike Stump
@ 2007-04-11 2:18 ` Mark Mitchell
2007-04-12 1:58 ` Mike Stump
0 siblings, 1 reply; 10+ messages in thread
From: Mark Mitchell @ 2007-04-11 2:18 UTC (permalink / raw)
To: Mike Stump; +Cc: gcc-patches@gcc.gnu.org Patches, Diego Novillo
Mike Stump wrote:
> On Apr 10, 2007, at 6:13 PM, Mark Mitchell wrote:
>> Mike Stump wrote:
>>
>>> --- ./cp/class.c.~1~ 2007-04-04 19:37:15.000000000 -0700
>>> +++ ./cp/class.c 2007-04-10 17:34:46.000000000 -0700
>>> @@ -7108,7 +7108,7 @@ dfs_accumulate_vtbl_inits (tree binfo,
>>> index = size_binop (MULT_EXPR,
>>> TYPE_SIZE_UNIT (vtable_entry_type),
>>> index);
>>> - vtbl = build2 (PLUS_EXPR, TREE_TYPE (vtbl), vtbl, index);
>>> + vtbl = build2 (PLUS_EXPR, vtbl_ptr_type_node, vtbl, index);
>>
>> That does not look to be type-correct at the tree level; the type of
>> VTBL + INDEX should be the same as the type of VTBL. You should
>> probably be using fold_convert to add the conversion, after the addition.
>
> Yeah, tried that, it didn't work.
I didn't know that.
> + vtbl = convert (vtbl_ptr_type_node, vtbl);
That's not the right function to call, even though it probably works;
convert is an ill-defined thing that handles lots of stuff, some of it
C++-specific. fold_convert is probably what we want.
> I've been burned more often by changing the shape of the tree days
> before release than I have by being type unsafe in the manner of the
> previous patch.
That's a fair point.
However, threatening to check in "obvious" patches that clearly aren't
-- for example, that do something that you know is abstractly wrong,
even if expedient -- is also a risk to the release. Please consider
"obvious" to mean something more like "every GCC contributor who knows
this code would immediately agree this is correct".
Given that we're looking at a hack, I'd prefer we stick with the hack we
know. In particular, we used to be introducing the type-unsafety when
creating the ADDR_EXPR, not after the fact. Diego changed us to use
build_address, which, politely, ensures type-safety, as well as calling
cxx_mark_addressable, which was the key thing to fix this bug.
So, let's just stomp on the type:
... build_address (...) ...
/* ??? We should call fold_convert to convert the address to
vtbl_ptr_type_node, which is the type of elements in the vtable.
However, the resulting NOP_EXPRs confuse other parts of the C++
front end. */
gcc_assert (TREE_CODE (vtbl) == ADDR_EXPR);
TREE_TYPE (vtbl) = vtbl_ptr_type_node;
That patch is OK if it passes testing. It would be nice if you would
try to fix this correctly for mainline, but if you don't have time, the
ugly hack is OK; it's essentially equivalent to the state before Diego's
change.
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-04-11 2:18 ` Mark Mitchell
@ 2007-04-12 1:58 ` Mike Stump
2007-04-12 3:50 ` Mark Mitchell
0 siblings, 1 reply; 10+ messages in thread
From: Mike Stump @ 2007-04-12 1:58 UTC (permalink / raw)
To: Mark Mitchell; +Cc: gcc-patches@gcc.gnu.org Patches, Diego Novillo
On Apr 10, 2007, at 7:18 PM, Mark Mitchell wrote:
> So, let's just stomp on the type:
>
> ... build_address (...) ...
> /* ??? We should call fold_convert to convert the address to
> vtbl_ptr_type_node, which is the type of elements in the vtable.
> However, the resulting NOP_EXPRs confuse other parts of the C++
> front end. */
> gcc_assert (TREE_CODE (vtbl) == ADDR_EXPR);
> TREE_TYPE (vtbl) = vtbl_ptr_type_node;
>
> That patch is OK if it passes testing.
Does the patch and results look ok to you?
The init5 used to fail for be before, so, though it is a regression in
my regtest, it isn't from before the previous change to class.c. The
various timeouts are probably safe, probably due to either slow
network filesystems, or make -j3 check. encode-8.mm did used to fail
before, so it is safe. The oddest result was:
-XPASS: 26_numerics/cmath/c99_classification_macros_c.cc (test for
excess errors)
? I don't have a clue. It _used_ to XPASS for me.
I tested:
* class.c (dfs_accumulate_vtbl_inits): Slam the vtbl type back to
vtbl_ptr_type_node
to ensure the mode is correct.
* g++.dg/tree-ssa/pr29585.C: Don't die on an expected warning.
Index: testsuite/g++.dg/tree-ssa/pr29585.C
===================================================================
--- testsuite/g++.dg/tree-ssa/pr29585.C (revision 123722)
+++ testsuite/g++.dg/tree-ssa/pr29585.C (working copy)
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -w" } */
class ios_base{};
struct basic_ostream : virtual ios_base{};
Index: cp/class.c
===================================================================
--- cp/class.c (revision 123722)
+++ cp/class.c (working copy)
@@ -7113,6 +7113,12 @@
/* Figure out the position to which the VPTR should point. */
vtbl = TREE_PURPOSE (l);
vtbl = build_address (vtbl);
+ /* ??? We should call fold_convert to convert the address to
+ vtbl_ptr_type_node, which is the type of elements in the
+ vtable. However, the resulting NOP_EXPRs confuse other parts
+ of the C++ front end. */
+ gcc_assert (TREE_CODE (vtbl) == ADDR_EXPR);
+ TREE_TYPE (vtbl) = vtbl_ptr_type_node;
index = size_binop (PLUS_EXPR,
size_int (non_fn_entries),
size_int (list_length (TREE_VALUE (l))));
and got:
--- mail-report-070411.log 2007-04-11 14:48:38.000000000 -0700
+++ mail-report-070411-ice.log 2007-04-11 13:40:42.000000000 -0700
@@ -6,47 +6,34 @@
=== g++ tests ===
Running target unix
WARNING: Could not compile g++.dg/compat/struct-layout-1 generator
-FAIL: g++.dg/eh/ctor3.C (test for excess errors)
FAIL: g++.dg/other/unused1.C scan-assembler (string|ascii?)z?\
\t"class2("|\\\\\\\\000)
FAIL: g++.dg/other/unused1.C scan-assembler (string|ascii?)z?\
\t"printer("|\\\\\\\\000)
+WARNING: program timed out.
XPASS: g++.dg/tree-ssa/ivopts-1.C scan-tree-dump-not offset: -4B
XPASS: g++.dg/tree-ssa/ivopts-1.C scan-tree-dump-not &x\\[5\\]
-FAIL: g++.dg/tree-ssa/pr29585.C (test for excess errors)
FAIL: g++.dg/warn/weak1.C (test for excess errors)
WARNING: g++.dg/warn/weak1.C compilation failed to produce executable
FAIL: g++.dg/special/conpr-3.C execution test
WARNING: program timed out.
-FAIL: g++.old-deja/g++.brendan/crash25.C (test for excess errors)
-FAIL: g++.old-deja/g++.mike/p4736b.C (internal compiler error)
-FAIL: g++.old-deja/g++.mike/p4736b.C (test for excess errors)
-WARNING: g++.old-deja/g++.mike/p4736b.C compilation failed to produce
executable
-FAIL: g++.old-deja/g++.mike/p700.C (test for excess errors)
+FAIL: g++.old-deja/g++.other/init5.C (test for excess errors)
=== g++ Summary ===
-# of expected passes 13132
-# of unexpected failures 10
+# of expected passes 13137
+# of unexpected failures 5
# of unexpected successes 2
# of expected failures 66
# of unsupported tests 110
/Volumes/mrs5/net/gcc-4.2-fsf/gcc-darwinO2/gcc/testsuite/g++/../../g+
+ version 4.2.0 20070411 (prerelease)
=== gcc tests ===
Running target unix
-WARNING: program timed out.
-FAIL: gcc.c-torture/compile/20020109-1.c -O1 (test for excess errors)
-WARNING: program timed out.
-FAIL: gcc.c-torture/execute/20021120-3.c compilation, -Os
-UNRESOLVED: gcc.c-torture/execute/20021120-3.c execution, -Os
-WARNING: program timed out.
-FAIL: gcc.c-torture/execute/950511-1.c compilation, -O3 -fomit-frame-
pointer
-UNRESOLVED: gcc.c-torture/execute/950511-1.c execution, -O3 -fomit-
frame-pointer
XPASS: gcc.c-torture/execute/mayalias-2.c compilation, -O3 -g
FAIL: gcc.dg/sibcall-6.c execution test
FAIL: gcc.dg/tree-ssa/gen-vect-11b.c scan-tree-dump-times vectorized
0 loops 1
FAIL: gcc.dg/tree-ssa/gen-vect-11c.c scan-tree-dump-times vectorized
0 loops 1
FAIL: gcc.dg/tree-ssa/loadpre1.c scan-tree-dump-times Eliminated: 1 1
@@ -64,15 +51,14 @@
FAIL: gcc.target/i386/vectorize1.c (internal compiler error)
FAIL: gcc.target/i386/vectorize1.c (test for excess errors)
=== gcc Summary ===
-# of expected passes 41680
-# of unexpected failures 19
+# of expected passes 41685
+# of unexpected failures 16
# of unexpected successes 2
# of expected failures 110
-# of unresolved testcases 2
# of untested testcases 28
# of unsupported tests 392
/Volumes/mrs5/net/gcc-4.2-fsf/gcc-darwinO2/gcc/xgcc version 4.2.0
20070411 (prerelease)
=== gfortran tests ===
@@ -91,10 +77,12 @@
FAIL: gfortran.dg/common_equivalence_1.f -O3 -g (test for excess
errors)
FAIL: gfortran.dg/common_pointer_1.f90 -O3 -g (test for excess
errors)
FAIL: gfortran.dg/contained_1.f90 -O3 -g (test for excess errors)
FAIL: gfortran.dg/cray_pointers_2.f90 -O3 -g (test for excess
errors)
FAIL: gfortran.dg/cray_pointers_5.f90 -O3 -g (test for excess
errors)
+WARNING: program timed out.
+FAIL: gfortran.dg/direct_io_1.f90 -O0 (test for excess errors)
FAIL: gfortran.dg/entry_array_specs_2.f -O3 -g (test for excess
errors)
FAIL: gfortran.dg/equiv_6.f90 -O3 -g (test for excess errors)
FAIL: gfortran.dg/f2c_6.f90 -O3 -g (test for excess errors)
FAIL: gfortran.dg/loc_1.f90 -O3 -g (test for excess errors)
FAIL: gfortran.dg/loc_2.f90 -O3 -g (test for excess errors)
@@ -136,33 +124,31 @@
FAIL: gfortran.dg/g77/intrinsic-unix-erf.f -O3 -g (test for excess
errors)
FAIL: gfortran.dg/g77/short.f -O3 -g (test for excess errors)
=== gfortran Summary ===
-# of expected passes 15854
-# of unexpected failures 56
+# of expected passes 15853
+# of unexpected failures 57
# of expected failures 7
# of unsupported tests 38
/Volumes/mrs5/net/gcc-4.2-fsf/gcc-darwinO2/gcc/testsuite/
gfortran/../../gfortran version 4.2.0 20070411 (prerelease)
=== obj-c++ tests ===
Running target unix
-WARNING: program timed out.
-FAIL: obj-c++.dg/encode-8.mm (test for excess errors)
FAIL: obj-c++.dg/stubify-1.mm (test for excess errors)
ERROR: obj-c++.dg/stubify-1.mm: error executing dg-final: couldn't
open "stubify-1.s": no such file or directory
UNRESOLVED: obj-c++.dg/stubify-1.mm: error executing dg-final:
couldn't open "stubify-1.s": no such file or directory
FAIL: obj-c++.dg/stubify-2.mm (test for excess errors)
ERROR: obj-c++.dg/stubify-2.mm: error executing dg-final: couldn't
open "stubify-2.mm.08.jump": no such file or directory
UNRESOLVED: obj-c++.dg/stubify-2.mm: error executing dg-final:
couldn't open "stubify-2.mm.08.jump": no such file or directory
=== obj-c++ Summary ===
-# of expected passes 460
-# of unexpected failures 3
+# of expected passes 461
+# of unexpected failures 2
# of unresolved testcases 2
/Volumes/mrs5/net/gcc-4.2-fsf/gcc-darwinO2/gcc/testsuite/obj-c+
+/../../g++ version 4.2.0 20070411 (prerelease)
=== objc tests ===
@@ -295,11 +281,10 @@
FAIL: 23_containers/vector/invalidation/2.cc execution test
FAIL: 23_containers/vector/invalidation/3.cc execution test
FAIL: 23_containers/vector/invalidation/4.cc execution test
FAIL: 23_containers/vector/modifiers/swap/2.cc (test for excess
errors)
FAIL: 23_containers/vector/modifiers/swap/3.cc (test for excess
errors)
-XPASS: 26_numerics/cmath/c99_classification_macros_c.cc (test for
excess errors)
FAIL: backward/strstream_members.cc execution test
FAIL: ext/bitmap_allocator/check_allocate_max_size.cc (test for
excess errors)
FAIL: ext/bitmap_allocator/check_deallocate_null.cc (test for excess
errors)
FAIL: ext/bitmap_allocator/check_delete.cc (test for excess errors)
FAIL: ext/mt_allocator/check_allocate_big_per_type.cc (test for
excess errors)
@@ -382,12 +367,12 @@
=== libstdc++ Summary ===
# of expected passes 3693
# of unexpected failures 140
-# of unexpected successes 3
-# of expected failures 13
+# of unexpected successes 2
+# of expected failures 14
# of unsupported tests 318
Compiler version: 4.2.0 20070411 (prerelease)
Platform: i686-apple-darwin9
configure flags: --with-arch=nocona --with-tune=generic --prefix=/
tmp/gcc-061220 --build=i686-apple-darwin9 --host=i686-apple-darwin9 --
enable-languages=c,c++,fortran,objc,obj-c++,treelang
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries
2007-04-12 1:58 ` Mike Stump
@ 2007-04-12 3:50 ` Mark Mitchell
0 siblings, 0 replies; 10+ messages in thread
From: Mark Mitchell @ 2007-04-12 3:50 UTC (permalink / raw)
To: Mike Stump; +Cc: gcc-patches@gcc.gnu.org Patches, Diego Novillo
Mike Stump wrote:
> On Apr 10, 2007, at 7:18 PM, Mark Mitchell wrote:
>> So, let's just stomp on the type:
>>
>> ... build_address (...) ...
>> /* ??? We should call fold_convert to convert the address to
>> vtbl_ptr_type_node, which is the type of elements in the vtable.
>> However, the resulting NOP_EXPRs confuse other parts of the C++
>> front end. */
>> gcc_assert (TREE_CODE (vtbl) == ADDR_EXPR);
>> TREE_TYPE (vtbl) = vtbl_ptr_type_node;
>>
>> That patch is OK if it passes testing.
>
> Does the patch and results look ok to you?
Yes, this is OK; thanks.
I don't know what to say about some of the changes in results that you
saw. Are you sure the only change to your environment between test runs
was the patch in question? Certainly, the init5.C change seems odd, as
that test has no virtual functions. However, since the patch looks
correct to me, I think it is OK.
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2007-04-12 3:50 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-31 19:50 PR 29585: C++ front end not setting TREE_ADDRESSABLE on vtbl entries Diego Novillo
2007-03-31 20:01 ` Mark Mitchell
2007-04-05 2:02 ` Mike Stump
2007-04-11 1:06 ` Mike Stump
2007-04-11 1:13 ` Mark Mitchell
2007-04-11 2:02 ` Mike Stump
2007-04-11 2:18 ` Mark Mitchell
2007-04-12 1:58 ` Mike Stump
2007-04-12 3:50 ` Mark Mitchell
2007-04-11 1:15 ` Eric Christopher
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).