This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/54207] [4.7/4.8 Regression][C++0x] ICE in build_noexcept_spec when bool is #defined/typedef'd


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
         AssignedTo|unassigned at gcc dot       |jakub at gcc dot gnu.org
                   |gnu.org                     |

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-12-04 11:08:04 UTC ---
Created attachment 28874
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28874
gcc48-pr54207.patch

The testcase is invalid, you can't add typedefs with system reserved names
before including standard headers, nor redefine keywords to something else.

That said, in this patch is a testcase which IMHO is valid and still ICEs even
with current trunk.

The thing is that perform_implicit_conversion will not do anything if the type
is same_type_p, but different (B vs. bool in this testcase, _Bool vs. bool in
the original testcase).  In both cases the other type is also a BOOLEAN_TYPE,
but distinct from the original one.  Doing == boolean_true_node or ==
boolean_false_node comparison doesn't work in that case, they aren't pointer
equal (as they have distinct type), yet they operand_equal_p true.  So, either
we use operand_equal_p as this patch does (the patch guards it with INTEGER_CST
check to avoid calling operand_equal_p unnecessarily, but that can be certainly
dropped and done unconditionally if Jason prefers that), or we could for
INTEGER_CSTs fold_convert them to boolean_type_node, then the pointer equality
comparison would work.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]