1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/test/Verifier/scalable-aggregates.ll
Graham Hunter 19a94b9e2a [SVE][IR] Scalable Vector IR Type with pr42210 fix
Recommit of D32530 with a few small changes:
  - Stopped recursively walking through aggregates in
    the verifier, so that we don't impose too much
    overhead on large modules under LTO (see PR42210).
  - Changed tests to match; the errors are slightly
    different since they only report the array or
    struct that actually contains a scalable vector,
    rather than all aggregates which contain one in
    a nested member.
  - Corrected an older comment

Reviewers: thakis, rengolin, sdesmalen

Reviewed By: sdesmalen

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

llvm-svn: 363658
2019-06-18 10:11:56 +00:00

27 lines
1.1 KiB
LLVM

; RUN: not opt -S -verify < %s 2>&1 | FileCheck %s
;; Arrays and Structs cannot contain scalable vectors, since we don't
;; know the size at compile time and the container types need to have
;; a known size.
; CHECK-DAG: Arrays cannot contain scalable vectors
; CHECK-DAG: [4 x <vscale x 256 x i1>]; ModuleID = '<stdin>'
; CHECK-DAG: Arrays cannot contain scalable vectors
; CHECK-DAG: [2 x <vscale x 4 x i32>]; ModuleID = '<stdin>'
; CHECK-DAG: Structs cannot contain scalable vectors
; CHECK-DAG: { i32, <vscale x 1 x i32> }; ModuleID = '<stdin>'
;; CHECK-DAG: Structs cannot contain scalable vectors
; CHECK-DAG: { <vscale x 16 x i8>, <vscale x 2 x double> }; ModuleID = '<stdin>'
; CHECK-DAG: Structs cannot contain scalable vectors
; CHECK-DAG: %sty = type { i64, <vscale x 32 x i16> }; ModuleID = '<stdin>'
%sty = type { i64, <vscale x 32 x i16> }
define void @scalable_aggregates() {
%array = alloca [2 x <vscale x 4 x i32>]
%struct = alloca { <vscale x 16 x i8>, <vscale x 2 x double> }
%named_struct = alloca %sty
%s_in_a = alloca [2 x { i32, <vscale x 1 x i32> } ]
%a_in_s = alloca { i64, [4 x <vscale x 256 x i1> ] }
ret void
}