This should enable us to test the generation of target-specific constant pools, e.g. for ARM: constants: - id: 0 value: 'g(GOT_PREL)-(LPC0+8-.)' alignment: 4 isTargetSpecific: true I intend to use this to test PIC support in GlobalISel for ARM. This is difficult to test outside of that context, since the existing MIR tests usually rely on parser support as well, and that seems a bit trickier to add. We could try to add a unit test, but the setup for that seems rather convoluted and overkill. We do test however that the parser reports a nice error when encountering a target-specific constant pool. Differential Revision: https://reviews.llvm.org/D36092 llvm-svn: 309806
28 lines
851 B
YAML
28 lines
851 B
YAML
# RUN: not llc -mtriple arm-unknown -run-pass none -o /dev/null %s 2>&1 | FileCheck %s
|
|
--- |
|
|
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
|
|
|
@g = private global i32 4
|
|
define void @target_constant_pool() { ret void }
|
|
...
|
|
---
|
|
name: target_constant_pool
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: gpr, preferred-register: '' }
|
|
- { id: 1, class: gpr, preferred-register: '' }
|
|
constants:
|
|
- id: 0
|
|
# CHECK: [[@LINE+1]]:22: Can't parse target-specific constant pool entries yet
|
|
value: 'g-(LPC0+8)'
|
|
alignment: 4
|
|
isTargetSpecific: true
|
|
body: |
|
|
bb.0.entry:
|
|
%0 = LDRi12 %const.0, 0, 14, _ :: (load 4 from constant-pool)
|
|
%1 = PICLDR killed %0, 0, 14, _ :: (dereferenceable load 4 from @g)
|
|
%r0 = COPY %1
|
|
BX_RET 14, _, implicit %r0
|
|
|
|
...
|