public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* 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).