https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64344

            Bug ID: 64344
           Summary: [5 Regression] [UBSAN] ICE with
                    -fsanitize=float-cast-overflow [ICE in
                    -fsanitize=float-cast-overflow]
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org,
                    mpolacek at gcc dot gnu.org

New since today:


$ gcc -w -fsanitize=float-cast-overflow new8.i

new8.i: In function ‘float2long’:
new8.i:11:23: internal compiler error: in -fsanitize=float-cast-overflow
   *exponent = (int32 )log((double )value);
                       ^
0x9058fb gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
        ../../gcc/gimplify.c:8451


For the following program:

/* ----------------------------------------------------------*/

typedef enum {
  PARAPROX_Q_EXTRA_FAST = 4
} pthread_cond_t;
extern int drand48_r (struct drand48_data *__restrict __buffer,
       int __reject3)
{
}
typedef int int32;
float2long(int32 *mantisse, int32 *exponent, float value)
{
  *exponent = (int32 )log((double )value);
}

Reply via email to