summaryrefslogtreecommitdiff
path: root/bin/sync/sync.8
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2012-12-01 22:54:03 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2012-12-01 22:54:03 +0000
commitb02dfe0ab7aae6700f0c15419373891118eab134 (patch)
tree535b6d29222cbe7e3bb3fe3d6f9637f31e93face /bin/sync/sync.8
parenta06516e47e752c824b8c4c1a049b5e408d3ba696 (diff)
reload_cse_noop_set_p(): invoking rtx_equal_for_cselib_p() is not enough; if
it reports the dest and source parts of the set insn are identical, we need to check whether they are volatile memory references, and return 0 (not a noop) in that case. This allows `*volatile_ptr = *volatile_ptr;' constructs to no longer be incorrectly optimized away on platforms which can perform memory to memory transfers in a single instruction (i.e. m68k and vax). Found the hard way on vax, where some systems need to frob the interrupt stack early, before being able to handle faults, and a gcc3-built kernel would have this operation optimized away, leading to a quick system reset.
Diffstat (limited to 'bin/sync/sync.8')
0 files changed, 0 insertions, 0 deletions