[llvm-commits] [llvm] r162733 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAGNodes.h include/llvm/Target/TargetSelectionDAG.td lib/CodeGen/SelectionDAG/SelectionDAG.cpp test/CodeGen/Hexagon/newvaluejump.ll test/CodeGen/Hexagon/newvaluestore.l
Hal Finkel
hfinkel at anl.gov
Wed Aug 29 13:58:45 PDT 2012
On Wed, 29 Aug 2012 13:52:05 -0700
Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
> On Aug 29, 2012, at 11:45 AM, Eli Friedman <eli.friedman at gmail.com>
> wrote:
>
> >> + unsigned Flags = MachineMemOperand::MOVolatile;
> >> + if (Opcode != ISD::ATOMIC_STORE)
> >> + Flags |= MachineMemOperand::MOLoad;
> >> + if (Opcode != ISD::ATOMIC_LOAD)
> >> + Flags |= MachineMemOperand::MOStore;
> >
> > I'm not sure this is safe; I suppose it depends on how exactly
> > "volatile" is defined, though. Specifically, it's unsafe to move an
> > arbitrary load from after an "acquire" load to before it.
>
> OK, r162857 should bring us back to the old behavior.
>
> MachineInstr::isSafeToMove() now treats volatile and atomic loads as
> if they were 'stores'. Here, 'store' means a barrier for moving a
> load instruction.
Should these semantics be documented somewhere in the language
reference?
-Hal
>
> Thanks, Eli
>
> /jakob
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
--
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list