diff options
author | Andrew Pinski <apinski@marvell.com> | 2023-05-07 01:38:17 +0000 |
---|---|---|
committer | Andrew Pinski <apinski@marvell.com> | 2023-05-07 15:24:39 +0000 |
commit | a1a9ce2441df0675540faee8476523164e12578b (patch) | |
tree | 4ae60695dd65f3be066515c9e82fe05c7dbd4589 | |
parent | 681ba2f7681f295a102cd63ffd5ce2b86a5f706e (diff) | |
download | gcc-a1a9ce2441df0675540faee8476523164e12578b.zip gcc-a1a9ce2441df0675540faee8476523164e12578b.tar.gz gcc-a1a9ce2441df0675540faee8476523164e12578b.tar.bz2 |
Fix aarch64/109762: push_options/push_options does not work sometimes
aarch64_isa_flags (and aarch64_asm_isa_flags) are both aarch64_feature_flags (uint64_t)
but since r12-8000-g14814e20161d, they are saved/restored as unsigned long. This
does not make a difference for LP64 targets but on ILP32 and LLP64IL32 targets,
it means it does not get restored correctly.
This patch changes over to use aarch64_feature_flags instead of unsigned long.
Committed as obvious after a bootstrap/test.
gcc/ChangeLog:
PR target/109762
* config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
Change argument type to aarch64_feature_flags.
* config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
constructor argument type to aarch64_feature_flags.
Change m_old_asm_isa_flags to be aarch64_feature_flags.
-rw-r--r-- | gcc/config/aarch64/aarch64-builtins.cc | 2 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-protos.h | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index 94ad364..cb6aae3 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -1547,7 +1547,7 @@ aarch64_scalar_builtin_type_p (aarch64_simd_type t) /* Enable AARCH64_FL_* flags EXTRA_FLAGS on top of the base Advanced SIMD set. */ -aarch64_simd_switcher::aarch64_simd_switcher (unsigned int extra_flags) +aarch64_simd_switcher::aarch64_simd_switcher (aarch64_feature_flags extra_flags) : m_old_asm_isa_flags (aarch64_asm_isa_flags), m_old_general_regs_only (TARGET_GENERAL_REGS_ONLY) { diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 4904d19..b138494 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -733,11 +733,11 @@ const unsigned int AARCH64_BUILTIN_CLASS = (1 << AARCH64_BUILTIN_SHIFT) - 1; class aarch64_simd_switcher { public: - aarch64_simd_switcher (unsigned int extra_flags = 0); + aarch64_simd_switcher (aarch64_feature_flags extra_flags = 0); ~aarch64_simd_switcher (); private: - unsigned long m_old_asm_isa_flags; + aarch64_feature_flags m_old_asm_isa_flags; bool m_old_general_regs_only; }; |