Move uinteger_pow gdb/valarith.c to gdb/utils.c and make it public
This is a generic function which I would like to use in a followup patch adding support for fixed-point types. So this commit moves it out of valarith.c into util.c, and makes it non-static. gdb/ChangeLog: * utils.h (uinteger_pow): Add declaration. * utils.c (uinteger_pow): Moved here (without changes)... * valarith.c (uinteger_pow): ... from here.
This commit is contained in:
parent
b34c74ab9a
commit
e55c6530db
4 changed files with 43 additions and 31 deletions
|
@ -819,37 +819,6 @@ integer_pow (LONGEST v1, LONGEST v2)
|
|||
}
|
||||
}
|
||||
|
||||
/* Integer exponentiation: V1**V2, where both arguments are
|
||||
integers. Requires V1 != 0 if V2 < 0. Returns 1 for 0 ** 0. */
|
||||
|
||||
static ULONGEST
|
||||
uinteger_pow (ULONGEST v1, LONGEST v2)
|
||||
{
|
||||
if (v2 < 0)
|
||||
{
|
||||
if (v1 == 0)
|
||||
error (_("Attempt to raise 0 to negative power."));
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The Russian Peasant's Algorithm. */
|
||||
ULONGEST v;
|
||||
|
||||
v = 1;
|
||||
for (;;)
|
||||
{
|
||||
if (v2 & 1L)
|
||||
v *= v1;
|
||||
v2 >>= 1;
|
||||
if (v2 == 0)
|
||||
return v;
|
||||
v1 *= v1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Obtain argument values for binary operation, converting from
|
||||
other types if one of them is not floating point. */
|
||||
static void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue