[PATCH] D37448: Fix cast assertion on MS inline assembly with vector spills (PR34021)
Simon Pilgrim via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 4 12:10:45 PDT 2017
RKSimon created this revision.
I can add the other test cases from PR34021 if required?
Repository:
rL LLVM
https://reviews.llvm.org/D37448
Files:
lib/CodeGen/CGStmt.cpp
test/CodeGen/pr34021.c
Index: test/CodeGen/pr34021.c
===================================================================
--- test/CodeGen/pr34021.c
+++ test/CodeGen/pr34021.c
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -fms-extensions %s -triple=i686-unknown-unknown -emit-llvm -o -
+// RUN: %clang_cc1 -fms-extensions %s -triple=x86_64-unknown-unknown -emit-llvm -o -
+// REQUIRES: asserts
+
+typedef int v4si __attribute__ ((vector_size (16)));
+v4si rep() {
+ v4si res;
+ __asm {}
+ return res;
+}
Index: lib/CodeGen/CGStmt.cpp
===================================================================
--- lib/CodeGen/CGStmt.cpp
+++ lib/CodeGen/CGStmt.cpp
@@ -2210,7 +2210,7 @@
llvm::IntegerType::get(getLLVMContext(), (unsigned)TmpSize));
Tmp = Builder.CreateTrunc(Tmp, TruncTy);
} else if (TruncTy->isIntegerTy()) {
- Tmp = Builder.CreateTrunc(Tmp, TruncTy);
+ Tmp = Builder.CreateZExtOrTrunc(Tmp, TruncTy);
} else if (TruncTy->isVectorTy()) {
Tmp = Builder.CreateBitCast(Tmp, TruncTy);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D37448.113785.patch
Type: text/x-patch
Size: 1058 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170904/8ee20537/attachment.bin>
More information about the cfe-commits
mailing list