OSDN Git Service

[ARM] Support constant pools in data when generating execute-only code.
authorAlexandros Lamprineas <alexandros.lamprineas@arm.com>
Wed, 14 Jun 2017 13:22:41 +0000 (13:22 +0000)
committerAlexandros Lamprineas <alexandros.lamprineas@arm.com>
Wed, 14 Jun 2017 13:22:41 +0000 (13:22 +0000)
commit3a204faa093c681a1e96c5e0622f50649b761ee0
tree8cc83c2ba399ca2057085230a9346f7f5fb84f38
parent50963b3b75627a63ddceb22ef2b80b5c16c0a028
[ARM] Support constant pools in data when generating execute-only code.

The ARM backend asserts against constant pool lowering when it generates
execute-only code in order to prevent the generation of constant pools in
the text section. It appears that target independent optimizations might
generate DAG nodes that represent constant pools. By lowering such nodes
as global addresses we don't violate the semantics of execute-only code
and also it is guaranteed that execute-only behaves correct with the
position-independent addressing modes that support execute-only code.

Differential Revision: https://reviews.llvm.org/D33773

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305387 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMAsmPrinter.cpp
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h
test/CodeGen/ARM/constantfp.ll