llvm-project/clang/test
Andrea Di Biagio e7347c67cd [x86-64 ABI] Fix for PR23082: an assertion failure when passing/returning a wrapper union in a full YMM register.
This patch fixes an assertion failure in method
'X86_64ABIInfo::GetByteVectorType'.

Method 'GetByteVectorType' (in TargetInfo.cpp) is responsible
for mapping a QualType 'Ty' (for an argument or return value) to an LLVM IR
type that, according to the ABI, must be passed in a XMM/YMM vector register.

When selecting the IR vector type, method 'GetByteVectorType' always tries to
choose the "best" IR vector type for the 'Ty' in input. In particular, if Ty
is a wrapper structure, it keeps unwrapping it until it finds a vector type VTy.
That VTy is the "preferred IR type".

However, function 'isSingleElementStructure' (used to unwrap structures) does
not know how to look through union types. So, before this patch, if Ty was in
a nest of wrapper structures with at least two union types, we would have
triggered an assertion failure (added at revision 230971).

With this patch, if method 'GetByteVectorType' fails to find the preferred
vector type, we just return a valid (although potentially 'less friendly')
vector type based on the type size. So, rather than asserting on an 'unexpected'
'Ty' in input, we conservatively return vector type <2 x double> if Ty is 16
bytes, or <4 x double> if Ty is 32 bytes.

Differential Revision: http://reviews.llvm.org/D10190

llvm-svn: 238861
2015-06-02 19:34:40 +00:00
..
ARCMT [Objective-C SDK modernizer]. Patch to convert setter/getter 2015-04-02 21:36:03 +00:00
ASTMerge Revert "[Hexagon] Test passes for hexagon target now that the backend correctly generates relocations." 2015-06-01 19:46:36 +00:00
Analysis Detect uses of mismatching forms of 'new' and 'delete' 2015-05-18 19:59:11 +00:00
CXX [Sema] Don't crash on out-of-line virtual constexpr functions 2015-05-22 05:49:41 +00:00
CodeCompletion
CodeGen ubsan: Check for null pointers given to certain builtins, such 2015-05-30 16:11:40 +00:00
CodeGenCUDA [cuda] Fixed test case failure on s390x 2015-05-11 18:35:58 +00:00
CodeGenCXX [x86-64 ABI] Fix for PR23082: an assertion failure when passing/returning a wrapper union in a full YMM register. 2015-06-02 19:34:40 +00:00
CodeGenObjC Implement no_sanitize attribute. 2015-05-15 18:33:32 +00:00
CodeGenObjCXX Changed renaming of local symbols by inserting a dot vefore the numeric suffix 2015-05-12 16:48:43 +00:00
CodeGenOpenCL clang/test/CodeGenOpenCL/opencl_types.cl: Tweak expressions according to r237548. 2015-05-18 03:58:27 +00:00
Coverage clang/test/Coverage/html-diagnostics.c: Use find(1) to avoid globbing. 2014-11-04 13:05:10 +00:00
CoverageMapping InstrProf: Only disable coverage in built-in macros, not all system macros 2015-05-14 22:14:10 +00:00
Driver add the -mrecip driver flag and process its options (2nd try) 2015-06-02 16:55:12 +00:00
FixIt Move fixit for const init from note to diag, weaken to warning in MS mode. 2015-04-17 08:32:38 +00:00
Format Remove error message when using the fallback style. 2015-06-02 11:52:15 +00:00
Frontend Don't leak TemplateIds when a plugin parses late-parsed templates at TU end. 2015-05-17 01:07:16 +00:00
Headers This patch adds support for the vector quadword add/sub instructions introduced 2015-05-25 15:52:45 +00:00
Index [modules] Move implicit creation of ImportDecls for #includes transformed into module imports from the frontend into Sema where it belongs. 2015-05-18 05:35:52 +00:00
Integration
Layout __declspec is not a core Clang language extension. Instead, require -fms-extensions or -fborland to enable the language extension. 2015-05-26 19:44:52 +00:00
Lexer Apply existing checks to C++1Z (has_feature_cxx0x); NFC 2015-05-22 02:57:28 +00:00
Misc Fix typo from r237482. "to reference of type" --> "to reference to type" 2015-05-16 01:39:39 +00:00
Modules [modules] If we re-enter a submodule from within itself (when submodule 2015-05-21 01:20:10 +00:00
OpenMP [OPENMP] Prepare codegen for privates in tasks for non-capturing of privates in CapturedStmt. 2015-05-22 08:56:35 +00:00
PCH [OPENMP] -fopenmp enables OpenMP support (fix for http://llvm.org/PR23492) 2015-05-20 04:24:19 +00:00
Parser __declspec is not a core Clang language extension. Instead, require -fms-extensions or -fborland to enable the language extension. 2015-05-26 19:44:52 +00:00
Preprocessor ARM: fix ACLE predefine for iOS's "-arch armv7s". 2015-05-29 21:28:25 +00:00
Profile Fix PPC failure. Adjust CHECK pattern. 2015-05-28 11:25:52 +00:00
Rewriter __declspec is not a core Clang language extension. Instead, require -fms-extensions or -fborland to enable the language extension. 2015-05-26 19:44:52 +00:00
Sema Fix PR21945: Crash in constant evaluator. 2015-06-01 16:23:08 +00:00
SemaCUDA [cuda] Preserve TLS storage class of host variable even if it's a 2015-04-28 20:31:49 +00:00
SemaCXX Fix assertion on C++ attributes in fillAttributedTypeLoc 2015-05-29 11:24:32 +00:00
SemaObjC Tweak availability checking to look through typedef declarations. 2015-05-14 22:07:25 +00:00
SemaObjCXX [Objective-C Sema] Fixes a typo which did not allow 2015-04-10 22:07:47 +00:00
SemaOpenCL Restores r228382, which was reverted in r228406. 2015-02-25 05:48:23 +00:00
SemaTemplate Limit set of types instantiated in FindInstantiatedDecl. 2015-05-15 10:10:28 +00:00
TableGen
Tooling Remove "REQUIRES:shell" from tests. They work for me. 2014-11-04 13:41:33 +00:00
Unit
VFS DebugInfo: Metadata constructs now start with DI* 2015-04-29 16:40:08 +00:00
.clang-format
CMakeLists.txt Revert "Wrap clang module files in a Mach-O, ELF, or COFF container." 2015-02-25 02:44:04 +00:00
Makefile Fix makefile for debuginfo-tests execution. 2014-10-17 23:50:47 +00:00
TestRunner.sh
cxx-sections.data
lit.cfg Check for backtraces in tests which are verifying pretty stack traces from a crashing clang. 2015-02-10 19:53:38 +00:00
lit.site.cfg.in Check for backtraces in tests which are verifying pretty stack traces from a crashing clang. 2015-02-10 19:53:38 +00:00
make_test_dirs.pl