aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2023-04-13 22:42:23 +0200
committerHarald Anlauf <anlauf@gmx.de>2023-04-13 22:42:23 +0200
commit43816633afd275a9057232a6ebfdc19e441f09ec (patch)
tree1be51eac455bf3e9632e991c9196fca644d2c50b
parent50dc52e853ff267ad1f4c98571c262017b0536f8 (diff)
downloadgcc-43816633afd275a9057232a6ebfdc19e441f09ec.zip
gcc-43816633afd275a9057232a6ebfdc19e441f09ec.tar.gz
gcc-43816633afd275a9057232a6ebfdc19e441f09ec.tar.bz2
Fortran: call of overloaded ‘abs(long long int&)’ is ambiguous [PR109492]
gcc/fortran/ChangeLog: PR fortran/109492 * trans-expr.cc (gfc_conv_power_op): Use absu_hwi and unsigned HOST_WIDE_INT for portability.
-rw-r--r--gcc/fortran/trans-expr.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index 79367fa..09cdd92 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -3400,11 +3400,12 @@ gfc_conv_power_op (gfc_se * se, gfc_expr * expr)
&& TREE_CODE (TREE_TYPE (rse.expr)) == INTEGER_TYPE)
{
wi::tree_to_wide_ref wlhs = wi::to_wide (lse.expr);
- HOST_WIDE_INT v, w;
+ HOST_WIDE_INT v;
+ unsigned HOST_WIDE_INT w;
int kind, ikind, bit_size;
v = wlhs.to_shwi ();
- w = abs (v);
+ w = absu_hwi (v);
kind = expr->value.op.op1->ts.kind;
ikind = gfc_validate_kind (BT_INTEGER, kind, false);