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/39867] New: [4.4 Regression] Wrong result of conditional operator exp < 2 ? 2U : (unsigned int) exp


With GCC 4.4.0, the following program outputs 4294967295 instead of 2:

#include <stdio.h>

int main (void)
{
  int exp = -1;
  printf ("%u\n", exp < 2 ? 2U : (unsigned int) exp);
  return 0;
}

Note: I've tried with gcc-snapshot under a Debian/unstable x86_64 Linux
machine, but the same bug was reported to me, with gcc-4.4.0 (it was found by
Philippe Theveny, who works on MPFR, and the MPFR tests fail because of that).

GCC 4.3.3 does not have this problem.


-- 
           Summary: [4.4 Regression] Wrong result of conditional operator
                    exp < 2 ? 2U : (unsigned int) exp
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: vincent at vinc17 dot org


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


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