aboutsummaryrefslogtreecommitdiff
path: root/libgcc/soft-fp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2024-01-12 10:10:20 +0100
committerJakub Jelinek <jakub@redhat.com>2024-01-12 10:10:20 +0100
commit6dece9913f459f46c86d383e0da2ea544ce73f63 (patch)
tree8e04bace0c9162ea72c9bdfeed1a24a85c23556a /libgcc/soft-fp
parent160799b366c33246ca16b84020ec49c3feabb0a3 (diff)
downloadgcc-6dece9913f459f46c86d383e0da2ea544ce73f63.zip
gcc-6dece9913f459f46c86d383e0da2ea544ce73f63.tar.gz
gcc-6dece9913f459f46c86d383e0da2ea544ce73f63.tar.bz2
libgcc: Use may_alias attribute in bitint handlers
As discussed on IRC, the following patch uses may_alias attribute, so that on targets like aarch64 where abi_limb_mode != limb_mode the library accesses the limbs (half limbs of the ABI) in the arrays with conservative alias set. 2024-01-12 Jakub Jelinek <jakub@redhat.com> * libgcc2.h (UBILtype): New typedef with may_alias attribute. (__mulbitint3, __divmodbitint4): Use UBILtype * instead of UWtype * and const UBILtype * instead of const UWtype *. * libgcc2.c (bitint_reduce_prec, bitint_mul_1, bitint_addmul_1, __mulbitint3, bitint_negate, bitint_submul_1, __divmodbitint4): Likewise. * soft-fp/bitint.h (UBILtype): Change define into a typedef with may_alias attribute.
Diffstat (limited to 'libgcc/soft-fp')
-rw-r--r--libgcc/soft-fp/bitint.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/libgcc/soft-fp/bitint.h b/libgcc/soft-fp/bitint.h
index 20cd41b..cb4d822 100644
--- a/libgcc/soft-fp/bitint.h
+++ b/libgcc/soft-fp/bitint.h
@@ -33,19 +33,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if BIL_UNITS_PER_WORD == 8
#define BIL_TYPE_SIZE (8 * __CHAR_BIT__)
#define BILtype DItype
-#define UBILtype UDItype
+typedef UDItype __attribute__ ((__may_alias__)) UBILtype;
#elif BIL_UNITS_PER_WORD == 4
#define BIL_TYPE_SIZE (4 * __CHAR_BIT__)
#define BILtype SItype
-#define UBILtype USItype
+typedef USItype __attribute__ ((__may_alias__)) UBILtype;
#elif BIL_UNITS_PER_WORD == 2
#define BIL_TYPE_SIZE (2 * __CHAR_BIT__)
#define BILtype HItype
-#define UBILtype UHItype
+typedef UHItype __attribute__ ((__may_alias__)) UBILtype;
#else
#define BIL_TYPE_SIZE __CHAR_BIT__
#define BILtype QItype
-#define UBILtype UQItype
+typedef UQItype __attribute__ ((__may_alias__)) UBILtype;
#endif
/* If *P is zero or sign extended (the latter only for PREC < 0) from