diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-07-18 18:31:20 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-07-18 18:31:20 +0200 |
| commit | 66017df336ae650c7fff2970e470a792036ba4be (patch) | |
| tree | 343a512ef5da9dc163747d0d7fe1938478751237 /compiler/rustc_codegen_gcc/src/builder.rs | |
| parent | 82310651b93a594a3fd69015e1562186a080d94c (diff) | |
| parent | f682d09eefc6700b9e5851ef193847959acf4fac (diff) | |
| download | rust-66017df336ae650c7fff2970e470a792036ba4be.tar.gz rust-66017df336ae650c7fff2970e470a792036ba4be.zip | |
Merge commit 'f682d09eefc6700b9e5851ef193847959acf4fac' into subtree-update_cg_gcc_2025-07-18
Diffstat (limited to 'compiler/rustc_codegen_gcc/src/builder.rs')
| -rw-r--r-- | compiler/rustc_codegen_gcc/src/builder.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_gcc/src/builder.rs b/compiler/rustc_codegen_gcc/src/builder.rs index 28d1ec7d895..a4ec4bf8dea 100644 --- a/compiler/rustc_codegen_gcc/src/builder.rs +++ b/compiler/rustc_codegen_gcc/src/builder.rs @@ -971,7 +971,11 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> { fn volatile_load(&mut self, ty: Type<'gcc>, ptr: RValue<'gcc>) -> RValue<'gcc> { let ptr = self.context.new_cast(self.location, ptr, ty.make_volatile().make_pointer()); - ptr.dereference(self.location).to_rvalue() + // (FractalFir): We insert a local here, to ensure this volatile load can't move across + // blocks. + let local = self.current_func().new_local(self.location, ty, "volatile_tmp"); + self.block.add_assignment(self.location, local, ptr.dereference(self.location).to_rvalue()); + local.to_rvalue() } fn atomic_load( |
