Messages in this thread | | | From | Andrew Cooper <> | Subject | Re: GCC 12 miscompilation of volatile asm (was: Re: [PATCH] arm64/io: Remind compiler that there is a memory side effect) | Date | Tue, 5 Apr 2022 13:20:50 +0000 |
| |
On 05/04/2022 14:04, Mark Rutland wrote: > On Tue, Apr 05, 2022 at 01:51:30PM +0100, Mark Rutland wrote: > My x86_64 test case is: > > Per compiler explorer (https://godbolt.org/z/cveff9hq5) GCC trunk currently > compiles this as: > > | msr_rmw_set_bits: > | mov rcx, rdi > | rdmsr > | sal rdx, 32 > | mov eax, eax > | or rax, rsi > | or rax, rdx > | mov rdx, rax > | shr rdx, 32 > | wrmsr > | ret > | func_with_msr_side_effects: > | ret >
Yeah... that code gen is very broken for func_with_msr_side_effects().
~Andrew
| |