Hi Chris, > > +// M_MAY_HAVE_SIDE_EFFECTS - Set if this instruction *might* have > > side effects, > > +// e.g. load instructions. Note: This and M_NEVER_HAS_SIDE_EFFECTS > > are mutually > > +// exclusive. You can't set both! If neither flag is set, then the > > instruction > > +// *always* has side effects. > > +const unsigned M_MAY_HAVE_SIDE_EFFECTS = 1 << 18; > > + > > +// M_NEVER_HAS_SIDE_EFFECTS - Set if this instruction *never* has > > side effects, > > +// e.g., xor on X86. Note: This and M_MAY_HAVE_SIDE_EFFECTS are > > mutually > > +// exclusive. You can't set both! If neither flag is set, then the > > instruction > > +// *always* has side effects. > > +const unsigned M_NEVER_HAS_SIDE_EFFECTS = 1 << 19; > > As others have pointed out, we need to be much more clear about what > these mean. Specifically, I'd list "NEVER" first (it is easier to > explain). The pertinent point here is completely missing in the > comments: this flag is set on an instruction where there is a side > effect that is not captured by any *operands* of the instruction or > *other flags*. Instructions that are "isBranch" instructions but have > no other side effects should have M_NEVER_HAS_SIDE_EFFECTS set. This > flag should only be set on an instruction when *all instances* of an > instruction of that opcode have no side effects in this way. > I'm confused. If we set this for an instruction where there is a side effect that is not captured by any operands of the instr or other flags, then it has a side effect, right? Or do you mean that we *shouldn't* set it in this situation (which makes more sense to me)?
-bw _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits