[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
Thu Jun 8 05:57:32 PDT 2017


christof added a comment.

This might be a bit more difficult then expected. The code generator assumes the constant pool is PC-rel addressable using `ADR` at the moment. This is not the case when the constant pool lives in a different section. I should have known, sorry.



================
Comment at: test/CodeGen/ARM/constantfp.ll:205
+; CHECK-XO-FLOAT: lower_fpconst_select:
+; CHECK-XO-FLOAT: adr [[REG:r[0-9]+]], [[LABEL]]
+; CHECK-XO-FLOAT: vldr {{s[0-9]+}}, {{[[]}}[[REG]]{{[]]}}
----------------
I doubt this is correct. `ADR` constructs a PC relative address with 8-bit immediate, but the constant pool is in data which might not be in range. I would expect a `movw`/`movt` to load the constant pool's address.


https://reviews.llvm.org/D33773





More information about the llvm-commits mailing list