[PATCH] D33773: [ARM] llc -arm-execute-only with floating point runs into UNREACHABLE

Christof Douma via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 9 07:20:01 PDT 2017


christof added a comment.

This patch is definitely not the right approach. The LEA pseudo instruction should never be selected. I had a bit of a closer look and it seems that (ARMWrapper tconstpool) has various patterns that all match to PC relative pseudo instructions. They all should not happen in XO, so maybe this work is a bit more involved then expected. Also, we still have the ConstantIslandPass that is going to assume these constants pools are present in text and will split basic blocks for no good reason.

I have to agree with Alexandros that the earlier approach of custom lowering the constant pool is more in line with the way the ARM Target is structured. @efriedma: any different opinion?



================
Comment at: lib/Target/ARM/ARMAsmPrinter.cpp:1250
+    // address of a Constant Pool.
+    if (Subtarget->genExecuteOnly()) {
+      const MCExpr *SymExpr = MCSymbolRefExpr::create(CPISymbol, OutContext);
----------------
These `*LEApcrel` are pseudo instructions that load a PC-relative address. They should **never** expand to MOVW/MOVT.


https://reviews.llvm.org/D33773





More information about the llvm-commits mailing list