skan added a comment. In D70157#1775481 <https://reviews.llvm.org/D70157#1775481>, @fedor.sergeev wrote:
> In D70157#1775016 <https://reviews.llvm.org/D70157#1775016>, @annita.zhang > wrote: > > > > The point is that we have explicit requirement at the start and we have a > > > lowering into 16-byte sequence that we need to be preserved exactly as it > > > is. > > > Essentially what we need is a "protection" for this sequence from any > > > changes by machinery that generates the binary code. > > > How can we protect a particular byte sequence from being changed by this > > > branch aligner? > > > > No, in general we can't. The current solution is based on assembler to > > insert prefix or nop before the cross (or against) boundary branches. It > > can only ensure the explicit alignment specified by directive, but not any > > implicit alignment. I don't think any fixup based on assembler can do it. > > On the other hand, any code sequence after the alignment directive or even > > just in a function has some kind of implicit alignment. It's hard for > > assembler to tell which implicit alignment to preserve. The preferred way > > is to use explicit alignment directive to specify it. > > > > For your scenario, a NOP padding is more controllable. NOP padding will be > > inserted just before the branch instructions (or macro fusion branch > > instructions). So if there's no branches (or macro fusion branches) in your > > code sequence, there will be no NOP inserted. > > > What if I insert explicit align(8) right *after* the sequence? If your insert explicit `.align 8` after the sequence, and the sequence doesn't has any branch to be aligned, the current solution won't change the sequence. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70157/new/ https://reviews.llvm.org/D70157 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits