[PATCH] D64982: [AsmPrinter] Print label if MBB's address is taken

Nick Desaulniers via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 19 03:03:49 PDT 2019


nickdesaulniers added a comment.

Sounds like this may address: https://bugs.llvm.org/show_bug.cgi?id=42309#c1?



================
Comment at: lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp:438
                   MBB.getSymbol()->print(OS, AP->MAI);
+                  const_cast<MachineBasicBlock*>(&MBB)->setLabelMustBeEmitted();
                   break;
----------------
void wrote:
> nickdesaulniers wrote:
> > Make `MBB` a non-const `MachineBasicBlock&`, then you can drop the ugly `const_cast` and then also the `&` then `->` and just use `.`.
> > 
> > ```
> > for (MachineBasicBlock& MBB : *MF) {
> >   ...
> >   MBB.setLabelMustBeEmitted();
> > ```
> The `MF` is coming from `MI` which itself is `const`. There's probably going to be a `const_cast` somewhere along the line. :-(
Ok, is the `&`+`->` still really necessary?
```
const_cast<MachineBasicBlock>(MBB).setLabelMustBeEmitted();
```

(I still feel like `const_cast` is a code smell; if we modify something, then our function signature should really not accept a `const` param.  `const` parameters are meant to be an agreement between caller and callee that callee doesn't modify the param).


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64982/new/

https://reviews.llvm.org/D64982





More information about the llvm-commits mailing list