libgcc: Avoid signed negation overflow in __powi?f2 [PR99236]

When these functions are called with integer minimum, there is UB on the libgcc
side.  Fixed in the obvious way, the code in the end wants ABSU_EXPR behavior.

2021-02-24  Jakub Jelinek  <jakub@redhat.com>

	PR libgcc/99236
	* libgcc2.c (__powisf2, __powidf2, __powitf2, __powixf2): Perform
	negation of m in unsigned type.
This commit is contained in:
Jakub Jelinek 2021-02-24 20:07:38 +01:00
parent b6680c2084
commit 35da095d7e
1 changed files with 1 additions and 1 deletions

View File

@ -1834,7 +1834,7 @@ __fixunssfSI (SFtype a)
TYPE
NAME (TYPE x, int m)
{
unsigned int n = m < 0 ? -m : m;
unsigned int n = m < 0 ? -(unsigned int) m : (unsigned int) m;
TYPE y = n % 2 ? x : 1;
while (n >>= 1)
{