unsigned-long-compare.c   [plain text]


/* Copyright (C) 2006 Free Software Foundation, Inc. */
/* Contributed by Carlos O'Donell on 2006-01-30 */

/* Test a division corner case where the expression simplifies
   to a comparison, and the optab expansion is wrong. The optab 
   expansion emits a function whose return is unbiased and needs
   adjustment. */
/* Origin: Carlos O'Donell <carlos@codesourcery.com> */
/* { dg-do run { target arm-*-*eabi* } } */
/* { dg-options "" } */
#include <stdlib.h>

#define BIG_CONSTANT 0xFFFFFFFF80000000ULL

int main (void)
{
  unsigned long long OneULL = 1ULL;
  unsigned long long result;

  result = OneULL / BIG_CONSTANT; 
  if (result)
    abort ();
  exit (0);
}