fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb, scalbn and scalbln.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Tue, 20 Feb 2007 19:29:48 +0000 (19:29 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Tue, 20 Feb 2007 19:29:48 +0000 (19:29 +0000)
* fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
scalbn and scalbln.

testsuite:
* gcc.dg/torture/builtin-nonneg-1.c: Add checks for scalb, scalbn
and scalbln.

From-SVN: r122169

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/builtin-nonneg-1.c

index 61e247bde305ca47437d975410eebb652ea7564f..bf0fbcdc8d17e6061da58788d7753d53a3240449 100644 (file)
@@ -1,3 +1,8 @@
+2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
+       scalbn and scalbln.
+
 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
 
        * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
index 951de4098d70fe2c242d01e3c1ef963560e31a6c..1e623003d18b96e0ad71c29673b35a2e6147d9b5 100644 (file)
@@ -13352,6 +13352,9 @@ tree_expr_nonnegative_warnv_p (tree t, bool *strict_overflow_p)
            CASE_FLT_FN (BUILT_IN_NEARBYINT):
            CASE_FLT_FN (BUILT_IN_RINT):
            CASE_FLT_FN (BUILT_IN_ROUND):
+           CASE_FLT_FN (BUILT_IN_SCALB):
+           CASE_FLT_FN (BUILT_IN_SCALBLN):
+           CASE_FLT_FN (BUILT_IN_SCALBN):
            CASE_FLT_FN (BUILT_IN_SIGNBIT):
            CASE_FLT_FN (BUILT_IN_SINH):
            CASE_FLT_FN (BUILT_IN_TANH):
index d1e67da965fda0bdcca94448c93de7ffa2de5705..c62ef00734e790cef517c203f04574b6aa3488fa 100644 (file)
@@ -1,3 +1,8 @@
+2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * gcc.dg/torture/builtin-nonneg-1.c: Add checks for scalb, scalbn
+       and scalbln.
+
 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
 
        * gcc.dg/darwin-minversion-1.c: New.
index 80cf3e3c83b79c1d52a24bb15000569470495b58..1047881333b3f11f6db4fce295745a92f92b9dbd 100644 (file)
@@ -120,9 +120,9 @@ void test(double d1, double d2, float f1, float f2,
      || signbitl(FN##l(fabsl(ld1),fabsl(ld2)))) \
    link_failure_##FN()
 
-  /* These are nonnegative if the first argument is, 2nd arg is int.  */
-#define ARG2TEST1_A2INT(FN) \
- extern void link_failure_##FN (void); PROTOTYPE2TYPE2(FN, int) \
+  /* These are nonnegative if the first argument is, 2nd arg is an int.  */
+#define ARG1TEST2_A2INT(FN, INTTYPE) \
+ extern void link_failure_##FN (void); PROTOTYPE2TYPE2(FN, INTTYPE) \
  if (signbit(FN(fabs(d1),d2)) || signbitf(FN##f(fabsf(f1),f2)) \
      || signbitl(FN##l(fabsl(ld1),ld2))) \
    link_failure_##FN()
@@ -143,7 +143,7 @@ void test(double d1, double d2, float f1, float f2,
   ARG1TEST1 (expm1);
   ARG1TEST1 (floor);
   ARG1TEST2 (fmod);
-  ARG2TEST1_A2INT (ldexp);
+  ARG1TEST2_A2INT (ldexp, int);
   ARG1TEST1_RTYPE (llrint, long long);
   ARG1TEST1_RTYPE (llround, long long);
   ARG1TEST1_RTYPE (lrint, long);
@@ -155,6 +155,9 @@ void test(double d1, double d2, float f1, float f2,
   ARG1TEST2 (pow);
   ARG1TEST1 (rint);
   ARG1TEST1 (round);
+  ARG1TEST2 (scalb);
+  ARG1TEST2_A2INT (scalbln, long);
+  ARG1TEST2_A2INT (scalbn, int);
   ARG1TEST1_RTYPE (signbit, int);
   ARG1TEST1 (sinh);
   ARG1TEST1 (tanh);