From 88f15eedbbf49c88f4386e0400936b8874fd5717 Mon Sep 17 00:00:00 2001 From: Michael Kuperstein Date: Wed, 21 Dec 2016 18:29:47 +0000 Subject: [LLParser] Parse vector GEP constant expression correctly The constantexpr parsing was too constrained and rejected legal vector GEPs. This relaxes it to be similar to the ones for instruction parsing. This fixes PR30816. Differential Revision: https://reviews.llvm.org/D28013 llvm-svn: 290261 --- llvm/test/Assembler/getelementptr_vec_ce.ll | 9 +++++++++ llvm/test/Assembler/getelementptr_vec_ce2.ll | 8 ++++++++ 2 files changed, 17 insertions(+) create mode 100644 llvm/test/Assembler/getelementptr_vec_ce.ll create mode 100644 llvm/test/Assembler/getelementptr_vec_ce2.ll (limited to 'llvm/test/Assembler') diff --git a/llvm/test/Assembler/getelementptr_vec_ce.ll b/llvm/test/Assembler/getelementptr_vec_ce.ll new file mode 100644 index 00000000000..4cf2964a57f --- /dev/null +++ b/llvm/test/Assembler/getelementptr_vec_ce.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +@G = global [4 x i32] zeroinitializer + +; CHECK-LABEL: @foo +; CHECK: ret <4 x i32*> getelementptr ([4 x i32], [4 x i32]* @G, <4 x i32> zeroinitializer, <4 x i32> ) +define <4 x i32*> @foo() { + ret <4 x i32*> getelementptr ([4 x i32], [4 x i32]* @G, i32 0, <4 x i32> ) +} diff --git a/llvm/test/Assembler/getelementptr_vec_ce2.ll b/llvm/test/Assembler/getelementptr_vec_ce2.ll new file mode 100644 index 00000000000..06362c8b3f6 --- /dev/null +++ b/llvm/test/Assembler/getelementptr_vec_ce2.ll @@ -0,0 +1,8 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +@G = global [4 x [4 x i32]] zeroinitializer + +; CHECK: getelementptr vector index has a wrong number of elements +define <4 x i32*> @foo() { + ret <4 x i32*> getelementptr ([4 x [4 x i32]], [4 x [4 x i32]]* @G, i32 0, <4 x i32> , <8 x i32> zeroinitializer) +} -- cgit v1.2.3