[LLVMdev] Implementing the ldr pseudo instruction in ARM integrated assembler

Amara Emerson
Tue, 12 Nov 2013 13:42:36 -0000

Hi David,

Thanks for your efforts here. I have a few comments on your patch, although
I realise it's still a work in progress.

+class ConstantPool {
+  MCSymbol *Label;
+  typedef std::vector<const MCExpr*> EntryVecTy;

Use a SmallVector here?

+  MCSymbol *getLabel() {return Label;}
+  size_t getNumEntries() {return Entries.size();}
+  const MCExpr *getEntry(size_t Num) {return Entries[Num];}
These can be const.

+  int64_t ConstantPoolCounter;
This can be unsigned.

+  case AsmToken::Equal: {
+    const MCSection *Section
getParser().getStreamer().getCurrentSection().first;
+    assert(Section);
We should probably check here that the mnemonic is actually 'ldr', e.g.
see
the AsmToken::Identifier case.

+@ RUN: clang -target arm -integrated-as -c %s -o %t1 2> %t2; echo
"ok"
+@ RUN: cat %t2 | FileCheck %s
Clang tests shouldn't be in the LLVM regression suite. Use llvm-mc instead
for assembling.

I'm not very familiar with the code around the asm parser, so I expect more
detailed comments from others to follow.

Cheers,
Amara