From debeee97cc31208631a4090fac328e6390d1059b Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Tue, 19 May 2020 13:06:27 -0400 Subject: [PATCH 151/179] FIXME: handle ABS_EXPR and ABSU_EXPR --- gcc/analyzer/region-model2.cc | 2 ++ gcc/testsuite/gcc.dg/analyzer/abs-1.c | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/analyzer/abs-1.c diff --git a/gcc/analyzer/region-model2.cc b/gcc/analyzer/region-model2.cc index 4926f1cbcb3..759b6e0fd69 100644 --- a/gcc/analyzer/region-model2.cc +++ b/gcc/analyzer/region-model2.cc @@ -3978,6 +3978,8 @@ region_model2::on_gassign (const gassign *assign, break; /* Unary ops. */ + case ABS_EXPR: + case ABSU_EXPR: case FIX_TRUNC_EXPR: case FLOAT_EXPR: case NOP_EXPR: diff --git a/gcc/testsuite/gcc.dg/analyzer/abs-1.c b/gcc/testsuite/gcc.dg/analyzer/abs-1.c new file mode 100644 index 00000000000..d6ce8d6afad --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/abs-1.c @@ -0,0 +1,22 @@ +#include "analyzer-decls.h" + +extern long int labs (long int x) + __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__const__)); + +long int test_1 (long int x) +{ + return labs (x); +} + +static long __attribute__((noinline)) +hide_long (long x) +{ + return x; +} + +long int test_2 (long int x) +{ + __analyzer_eval (labs (hide_long (42)) == 42); /* { dg-warning "TRUE" } */ + __analyzer_eval (labs (hide_long (-17)) == 17); /* { dg-warning "TRUE" } */ +} -- 2.21.0