------- Comment #1 from mmitchel at gcc dot gnu dot org  2006-01-21 18:49 
-------
This regression comes from the changes that were made (by Jason, I believe) to
use base class FIELD_DECLs to perform casts from derived to base classes,
rather than just pointer arithmetic.  

In build_base_path, we decide not to generate an explicit test for NULL because
we've noticed that the base class is at offset zero relative to the derived
class, and therefore we know that the conversion will be a no-op.  As an
optimization, we avoid generating the NULL test.

We end up with:

  ADDR_EXPR (COMPONENT_REF (INDIRECT_REF 0) (FIELD_DECL base))

which c_common_truthvalue_conversions "knows" must be non-NULL.

I believe that in the case that we know that the conversion is a no-op, we
should just return a NOP_EXPR, rather than going through the fields.

This is a P1.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at redhat dot com
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Priority|P3                          |P1
   Last reconfirmed|0000-00-00 00:00:00         |2006-01-21 18:49:07
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25895

Reply via email to