From b18394ce15639489a91a502d3b9db30d73898191 Mon Sep 17 00:00:00 2001
From: Andrew MacLeod <amacleod@redhat.com>
Date: Mon, 1 Nov 2021 16:20:59 -0400
Subject: [PATCH 3/6] Check for constant builtin value first.
The original code imported from EVRP for evaluating built_in_constant_p
didn't check to see if the value was a constant before checking the
inlining flag. Now we check for a constant first.
* gimple-range-fold.cc (fold_using_range::range_of_builtin_call): Test
for constant before any other processing.
---
gcc/gimple-range-fold.cc | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
@@ -960,18 +960,18 @@ fold_using_range::range_of_builtin_call (irange &r, gcall *call,
switch (func)
{
case CFN_BUILT_IN_CONSTANT_P:
- if (cfun->after_inlining)
- {
- r.set_zero (type);
- // r.equiv_clear ();
- return true;
- }
arg = gimple_call_arg (call, 0);
if (src.get_operand (r, arg) && r.singleton_p ())
{
r.set (build_one_cst (type), build_one_cst (type));
return true;
}
+ if (cfun->after_inlining)
+ {
+ r.set_zero (type);
+ // r.equiv_clear ();
+ return true;
+ }
break;
case CFN_BUILT_IN_TOUPPER:
--
2.17.2