summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Renaming to coincide with updated tagging system.upstream/release_35@215011Bill Wendling2014-08-060-0/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_350@215002 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214735:Bill Wendling2014-08-052-13/+15
| | | | | | | | | | | ------------------------------------------------------------------------ r214735 | ogoffart | 2014-08-04 10:28:11 -0700 (Mon, 04 Aug 2014) | 1 line Fix crash when accessing a property of an invalid interface ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214840 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214734:Bill Wendling2014-08-052-1/+25
| | | | | | | | | | | | | | | | | ------------------------------------------------------------------------ r214734 | ogoffart | 2014-08-04 10:28:05 -0700 (Mon, 04 Aug 2014) | 7 lines Fix crash when assiging to a property with an invalid type This is a regression from clang 3.4 Set the result to ExprError and returns true, rather than simply returns false because errors have been reported already and returning false show a confusing error ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214839 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214801:Bill Schmidt2014-08-042-142/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------------------------------------------------ r214801 | wschmidt | 2014-08-04 18:21:26 -0500 (Mon, 04 Aug 2014) | 19 lines [PPC64LE] Fix wrong IR for vec_sld and vec_vsldoi My original LE implementation of the vsldoi instruction, with its altivec.h interfaces vec_sld and vec_vsldoi, produces incorrect shufflevector operations in the LLVM IR. Correct code is generated because the back end handles the incorrect shufflevector in a consistent manner. This patch and a companion patch for LLVM correct this problem by removing the fixup from altivec.h and the corresponding fixup from the PowerPC back end. Several test cases are also modified to reflect the now-correct LLVM IR. The vec_sums and vec_vsumsws interfaces in altivec.h are also fixed, because they used vec_perm calls intended to be recognized as vsldoi instructions. These vec_perm calls are now replaced with code that more clearly shows the intent of the transformation. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214823 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214777:Hans Wennborg2014-08-041-49/+86
| | | | | | | | | | | | | Excluding the /Zp option, because that was added after the 3.5 branch. ------------------------------------------------------------------------ r214777 | hans | 2014-08-04 14:07:58 -0700 (Mon, 04 Aug 2014) | 1 line UsersManual: update clang-cl options ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214778 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214060:Bill Wendling2014-08-041-1/+1
| | | | | | | | | | | | ------------------------------------------------------------------------ r214060 | brad | 2014-07-27 18:57:32 -0700 (Sun, 27 Jul 2014) | 2 lines Add missing override keyword to OpenBSD IsIntegratedAssemblerDefault(). ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214765 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213834:Bill Wendling2014-08-042-3/+21
| | | | | | | | | | | | | | ------------------------------------------------------------------------ r213834 | rsmith | 2014-07-23 19:27:39 -0700 (Wed, 23 Jul 2014) | 4 lines Take the canonical type when forming a canonical template argument with 'nullptr' value. Fixes profiling of such template arguments to always give the same value. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214751 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213913:Bill Wendling2014-08-043-18/+19
| | | | | | | | | | | | | | ------------------------------------------------------------------------ r213913 | rsmith | 2014-07-24 18:12:44 -0700 (Thu, 24 Jul 2014) | 4 lines PR20445: Properly transform the initializer in a CXXNewExpr rather than running it through the normal TreeTransform logic for Exprs (which will strip off implicit parts of the initialization and never re-create them). ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214750 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213999:Bill Wendling2014-08-042-0/+3
| | | | | | | | | | | ------------------------------------------------------------------------ r213999 | tstellar | 2014-07-25 18:05:20 -0700 (Fri, 25 Jul 2014) | 1 line R600: Add processor type for Mullins ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214748 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214119:Bill Wendling2014-08-044-158/+158
| | | | | | | | | | | | | | | | | ------------------------------------------------------------------------ r214119 | joerg | 2014-07-28 14:06:22 -0700 (Mon, 28 Jul 2014) | 7 lines Change __INTx_TYPE__ to be always signed. This changes the value for char-based types from "char" to "signed char". Adjust stdint.h to use __INTx_TYPE__ directly without prefixing it with signed and to use __UINTx_TYPE__ for unsigned ones. The value of __INTx_TYPE__ now matches GCC. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214746 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214222:Bill Wendling2014-08-043-37/+21
| | | | | | | | | | | | | | ------------------------------------------------------------------------ r214222 | rsmith | 2014-07-29 14:20:12 -0700 (Tue, 29 Jul 2014) | 4 lines PR20473: Don't "deduplicate" string literals with the same value but different lengths! In passing, simplify string literal deduplication by relying on LLVM to deduplicate the underlying constant values. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214745 91177308-0d34-0410-b5e6-96231b3b80d8
* ------------------------------------------------------------------------Bill Wendling2014-08-048-15/+172
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214744 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214369:Bill Wendling2014-08-041-1/+1
| | | | | | | | | | | | ------------------------------------------------------------------------ r214369 | rsmith | 2014-07-30 17:22:56 -0700 (Wed, 30 Jul 2014) | 2 lines Rename this test so that it actually runs, and fix it so that it passes. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214743 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214050:Bill Wendling2014-08-043-1/+54
| | | | | | | | | | | | | | | | | ------------------------------------------------------------------------ r214050 | rsmith | 2014-07-26 22:12:49 -0700 (Sat, 26 Jul 2014) | 7 lines When looking for temporary dtors while building the CFG, do not walk into lambda expressions (other than their capture initializers) nor blocks. Do walk into default argument expressions and default initializer expressions. These bugs were causing us to produce broken CFGs whenever a lambda expression was used to initialize a libstdc++ std::function object! ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214742 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214471:Bill Wendling2014-08-041-3/+7
| | | | | | | | | | | | | | | ------------------------------------------------------------------------ r214471 | rtrieu | 2014-07-31 18:42:01 -0700 (Thu, 31 Jul 2014) | 5 lines Remove this pointer that is converted to bool. In well-defined contexts, the this pointer is always non-null. If the this pointer is null, it is undefined and the compiler may optimize it away by assuming it is non-null. The null checks are pushed into the callers. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214741 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214008:Bill Wendling2014-08-042-7/+43
| | | | | | | | | | | | | ------------------------------------------------------------------------ r214008 | rtrieu | 2014-07-25 19:10:52 -0700 (Fri, 25 Jul 2014) | 3 lines If a template argument is non-evaluable expression, use the profile ID to see if the two arguments are equal. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214696 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213912:Bill Wendling2014-08-042-11/+20
| | | | | | | | | | | | | | ------------------------------------------------------------------------ r213912 | rtrieu | 2014-07-24 17:24:02 -0700 (Thu, 24 Jul 2014) | 4 lines Pass the PrintingPolicy when converting types to strings in template type diffing. This removes extra "struct"/"class" in the type names and gives "bool" instead of "_Bool" for booleans. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214695 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213902:Bill Wendling2014-08-042-1/+23
| | | | | | | | | | | | | ------------------------------------------------------------------------ r213902 | rtrieu | 2014-07-24 16:14:16 -0700 (Thu, 24 Jul 2014) | 3 lines Print "(default)" for default template template arguments to match the printing of other types. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214694 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213840:Bill Wendling2014-08-042-31/+161
| | | | | | | | | | | | ------------------------------------------------------------------------ r213840 | rtrieu | 2014-07-23 21:24:50 -0700 (Wed, 23 Jul 2014) | 2 lines Add support for nullptr template arguments to template type diffing. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214693 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213613:Bill Wendling2014-08-042-5/+12
| | | | | | | | | | | | ------------------------------------------------------------------------ r213613 | rtrieu | 2014-07-21 21:42:15 -0700 (Mon, 21 Jul 2014) | 2 lines Fix '&' printing for template arguments in parentheses in template diffing. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214692 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213611:Bill Wendling2014-08-042-2/+7
| | | | | | | | | | | | ------------------------------------------------------------------------ r213611 | rtrieu | 2014-07-21 21:06:54 -0700 (Mon, 21 Jul 2014) | 2 lines More gracefully handle parentheses in templare arguments in template diffing. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214691 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213609:Bill Wendling2014-08-042-6/+42
| | | | | | | | | | | | | ------------------------------------------------------------------------ r213609 | rtrieu | 2014-07-21 20:33:01 -0700 (Mon, 21 Jul 2014) | 3 lines Fix a template diffing problem were an '&' is unexpectedly printed in a template argument. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214690 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213993,213998:Bob Wilson2014-07-301-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214262 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r214208:Bob Wilson2014-07-293-3/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214257 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213714:Renato Golin2014-07-281-1/+1
| | | | | | | | | | | | | | ------------------------------------------------------------------------ r213714 | compnerd | 2014-07-23 02:32:32 +0100 (Wed, 23 Jul 2014) | 4 lines test: add an explicit target triple Now that we support WoA, this test fails on ARM build bots as __va_start has a different signature on different architectures. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214110 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213937:Simon Atanasyan2014-07-27216-415/+400
| | | | | | | | | | | | | ------------------------------------------------------------------------ r213937 | atanasyan | 2014-07-25 15:20:21 +0400 (Fri, 25 Jul 2014) | 3 lines [Driver][Mips] Remove "fp64" directories from the mips-mti-linux-gnu toolchain directories description. Released version of this toolchain has not separate libraries for -mfp64 command line option. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214053 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213733:Yi Kong2014-07-231-0/+13
| | | | | | | | | | | | | | | ------------------------------------------------------------------------ r213733 | kongyi | 2014-07-23 10:25:02 +0100 (Wed, 23 Jul 2014) | 5 lines ARM: Add doc for ACLE memory barrier intrinsics Add documentations for ACLE memory barrier intrinsics, describing their motion barrier characteristics. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@213787 91177308-0d34-0410-b5e6-96231b3b80d8
* Merging r213741:Daniel Sanders2014-07-232-3/+17
| | | | | | | | | | | | | | | ------------------------------------------------------------------------ r213741 | dsanders | 2014-07-23 13:06:13 +0100 (Wed, 23 Jul 2014) | 5 lines [mips] -mno-shared should only be given to the assembler when -fPIC/-fpic/-fPIE/-fpie is not in effect. This fixes compiler recursion on MIPS32r2. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@213742 91177308-0d34-0410-b5e6-96231b3b80d8
* Creating release_35 branchBill Wendling2014-07-220-0/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@213598 91177308-0d34-0410-b5e6-96231b3b80d8
* Sema: correct handling for __va_start for WoASaleem Abdulrasool2014-07-224-1/+131
| | | | | | | | | | | | | | | | | | Windows ARM indicates __va_start as a variadic function. However, the function itself is treated as having 4 formal arguments: - (out) pointer to the va_list - (in) address of the last named argument - (in) slot size for the type of the last argument - address of the last named argument The last argument does not seem to have any bearing on codegen, and thus is not explicitly type checked at this point. Unlike the previous handling for __va_start, it does not currently validate if the parameter is the last named parameter (it seems that MSVC currently accepts this). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213595 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid crash if default argument parsed with errors.Serge Pavlov2014-07-225-5/+12
| | | | | | | | | | | | | | | If function parameters have default values, and that of the second parameter is parsed with errors, function declaration would have a parameter without default value that follows a parameter with that. Such declaration breaks logic of selecting overloaded function. As a solution, put opaque object as default value in such case. This patch fixes PR20055. Differential Revision: http://reviews.llvm.org/D4378 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213594 91177308-0d34-0410-b5e6-96231b3b80d8
* -fms-extensions: Implement half of #pragma init_segReid Kleckner2014-07-2214-25/+232
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This pragma is very rare. We could *hypothetically* lower some uses of it down to @llvm.global_ctors, but given that GlobalOpt isn't able to optimize prioritized global ctors today, there's really no point. If we wanted to do this in the future, I would check if the section used in the pragma started with ".CRT$XC" and had up to two characters after it. Those two characters could form the 16-bit initialization priority that we support in @llvm.global_ctors. We would have to teach LLVM to lower prioritized global ctors on COFF as well. This should let us compile some silly uses of this pragma in WebKit / Blink. Reviewers: rsmith, majnemer Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4549 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213593 91177308-0d34-0410-b5e6-96231b3b80d8
* clang-cl: ignore /showIncludes when combined with /E (PR20336)Hans Wennborg2014-07-212-2/+9
| | | | | | | | Both /showIncludes and /E write to stdout. Allowing both results in interleaved output and an error when double-closing the file descriptor, intended to catch issues like this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213589 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename metadata llvm.loop.vectorize.unroll to llvm.loop.vectorize.interleave.Mark Heffernan2014-07-214-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213587 91177308-0d34-0410-b5e6-96231b3b80d8
* clang-format vs plugin: set version number from cmake (PR20307)Hans Wennborg2014-07-212-4/+11
| | | | | | | | | | | | | | | Previously it was hard-coded to 1.0, which meant the installer would not install the plugin over previous versions. This commit makes us use LLVM's major.minor.patch version from cmake, or whatever CLANG_FORMAT_VS_VERSION is set to when configuring the build. It's pretty dirty to update a configuration file in the source directory from the cmake build like this. However, the plugin build is already dirty in this regard since it builds in the source dir when visual studio, and then copies out the resulting vsix. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213584 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "Emit lifetime.start / lifetime.end markers for unnamed temporary ↵Arnaud A. de Grandmaison2014-07-214-210/+24
| | | | | | | | | objects." This commit did break the sanitizer-x86 bot. Revert it while investigating. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213579 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix build breakage caused by use of std::to_string(int). Replace with ↵Mark Heffernan2014-07-211-14/+19
| | | | | | raw_string_ostream. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213578 91177308-0d34-0410-b5e6-96231b3b80d8
* Emit lifetime.start / lifetime.end markers for unnamed temporary objects.Arnaud A. de Grandmaison2014-07-214-24/+210
| | | | | | This will give more information to the optimizers so that they can reuse stack slots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213576 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for '#pragma unroll'.Mark Heffernan2014-07-2116-149/+566
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213574 91177308-0d34-0410-b5e6-96231b3b80d8
* Sema: Handle C11 atomics when diagnosing out of range comparisonsJustin Bogner2014-07-213-0/+30
| | | | | | | | This fixes a couple of asserts when analyzing comparisons involving C11 atomics that were uncovered by r205608 when we extended the applicability of -Wtautological-constant-out-of-range-compare. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213573 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Initial parsing and sema analysis for 'flush' directive.Alexey Bataev2014-07-2128-11/+673
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213512 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Parsing/Sema of the OpenMP directive 'critical'.Alexander Musman2014-07-2128-24/+779
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213510 91177308-0d34-0410-b5e6-96231b3b80d8
* Trivial doc fixes: add missing whitespace, and s/overriden/overridden/g.James Dennett2014-07-211-5/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213502 91177308-0d34-0410-b5e6-96231b3b80d8
* Add clang::DesignatedInitExpr::designators() for range-based access,James Dennett2014-07-211-0/+11
| | | | | | | with overloads for designators_range and designators_const_range. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213500 91177308-0d34-0410-b5e6-96231b3b80d8
* Add missing initialization found due to a valgrind false positive.Richard Smith2014-07-211-1/+1
| | | | | | | | | This field is never inspected in the object state initialized by this constructor; however, initializing it seems reasonable, since it has a meaningful value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213499 91177308-0d34-0410-b5e6-96231b3b80d8
* [modules] Fix some of the confusion when computing the override set for a macroRichard Smith2014-07-2115-27/+79
| | | | | | | | introduced by finalization. This is still not entirely correct; more fixes to follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213498 91177308-0d34-0410-b5e6-96231b3b80d8
* [OPENMP] Added several test cases for clauses 'ordered' and 'nowait': if ↵Alexey Bataev2014-07-215-42/+82
| | | | | | there are more than one 'nowait' or 'ordered' clause an error message is expected. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213496 91177308-0d34-0410-b5e6-96231b3b80d8
* [PowerPC] Optimize passing certain aggregates by valueUlrich Weigand2014-07-214-13/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In addition to enabling ELFv2 homogeneous aggregate handling, LLVM support to pass array types directly also enables a performance enhancement. We can now pass (non-homogeneous) aggregates that fit fully in registers as direct integer arrays, using an element type to encode the alignment requirement (that would otherwise go to the "byval align" field). This is preferable since "byval" forces the back-end to write the aggregate out to the stack, even if it could be passed fully in registers. This is particularly annoying on ELFv2, if there is no parameter save area available, since we then need to allocate space on the callee's stack just to hold those aggregates. Note that to implement this optimization, this patch does not attempt to fully anticipate register allocation rules as (defined in the ABI and) implemented in the back-end. Instead, the patch is simply passing *any* aggregate passed by value using the array mechanism if its size is up to 64 bytes. This means that some of those will end up being passed in stack slots anyway, but the generated code shouldn't be any worse either. (*Large* aggregates remain passed using "byval" to enable optimized copying via memcpy etc.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213495 91177308-0d34-0410-b5e6-96231b3b80d8
* [PowerPC] Support the ELFv2 ABIUlrich Weigand2014-07-212-9/+591
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements clang support for the PowerPC ELFv2 ABI. Together with a series of companion patches in LLVM, this makes clang/LLVM fully usable on powerpc64le-linux. Most of the ELFv2 ABI changes are fully implemented on the LLVM side. On the clang side, we only need to implement some changes in how aggregate types are passed by value. Specifically, we need to: - pass (and return) "homogeneous" floating-point or vector aggregates in FPRs and VRs (this is similar to the ARM homogeneous aggregate ABI) - return aggregates of up to 16 bytes in one or two GPRs The second piece is trivial to implement in any case. To implement the first piece, this patch makes use of infrastructure recently enabled in the LLVM PowerPC back-end to support passing array types directly, where the array element type encodes properties needed to handle homogeneous aggregates correctly. Specifically, the array element type encodes: - whether the parameter should be passed in FPRs, VRs, or just GPRs/stack slots (for float / vector / integer element types, respectively) - what the alignment requirements of the parameter are when passed in GPRs/stack slots (8 for float / 16 for vector / the element type size for integer element types) -- this corresponds to the "byval align" field With this support in place, the clang part simply needs to *detect* whether an aggregate type implements a float / vector homogeneous aggregate as defined by the ELFv2 ABI, and if so, pass/return it as array type using the appropriate float / vector element type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213494 91177308-0d34-0410-b5e6-96231b3b80d8
* If a module build reports errors, don't try to load itBen Langmuir2014-07-191-13/+21
| | | | | | ... just to find out that it didn't build. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213454 91177308-0d34-0410-b5e6-96231b3b80d8