Commit Graph

819 Commits

Author SHA1 Message Date
John McCall c41c63fbf8 Add support for __builtin_{add,sub,mul}_overflow.
Patch by David Grayson!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251651 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-29 20:48:01 +00:00
George Burgess IV 0a022661c7 [Sema] Implement -Wdouble-promotion for clang.
GCC has a warning called -Wdouble-promotion, which warns you when
an implicit conversion increases the width of a floating point type.

This is useful when writing code for architectures that can perform
hardware FP ops on floats, but must fall back to software emulation for
larger types (i.e. double, long double).

This fixes PR15109 <https://llvm.org/bugs/show_bug.cgi?id=15109>.

Thanks to Carl Norum for the patch!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251588 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-29 00:28:52 +00:00
Eric Fiselier f4915600f7 Skip NonNull sema checks in unevaluated contexts.
Summary:
Currently when a function annotated with __attribute__((nonnull)) is called in an unevaluated context with a null argument a -Wnonnull warning is emitted. 
This warning seems like a false positive unless the call expression is potentially evaluated. Change this behavior so that the non-null warnings use DiagRuntimeBehavior so they wont emit when they won't be evaluated.

Reviewers: majnemer, rsmith

Subscribers: mclow.lists, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249787 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 00:17:57 +00:00
Eric Fiselier 982137adce Diagnose const atomics in __atomic builtins.
Diagnose when a pointer to const T is used as the first argument in at atomic
builtin unless that builtin is a load operation. This is already checked for
C11 atomics builtins but not for __atomic ones.

This patch was given the LGTM by rsmith when it was part
of a larger review. (See http://reviews.llvm.org/D10407)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249252 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-04 00:11:02 +00:00
Artem Belevich 3fd3179dd7 [CUDA] Add appropriate host/device attribute to builtins.
The changes are part of attribute-based CUDA function overloading (D12453)
and as such are only enabled when it's in effect (-fcuda-target-overloads).

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248296 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-22 17:23:05 +00:00
Charles Davis 69b5694b76 Support __builtin_ms_va_list.
Summary:
This change adds support for `__builtin_ms_va_list`, a GCC extension for
variadic `ms_abi` functions. The existing `__builtin_va_list` support is
inadequate for this because `va_list` is defined differently in the Win64
ABI vs. the System V/AMD64 ABI.

Depends on D1622.

Reviewers: rsmith, rnk, rjmccall

CC: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247941 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-17 20:55:33 +00:00
Michael Zolotukhin 2db8497948 Introduce __builtin_nontemporal_store and __builtin_nontemporal_load.
Summary:
Currently clang provides no general way to generate nontemporal loads/stores.
There are some architecture specific builtins for doing so (e.g. in x86), but
there is no way to generate non-temporal store on, e.g. AArch64. This patch adds
generic builtins which are expanded to a simple store with '!nontemporal'
attribute in IR.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247104 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-08 23:52:33 +00:00
Alexey Bataev 4de8211781 [OPENMP 4.0] Initial support for array sections.
Adds parsing/sema analysis/serialization/deserialization for array sections in OpenMP constructs (introduced in OpenMP 4.0).
Currently it is allowed to use array sections only in OpenMP clauses that accepts list of expressions.
Differential Revision: http://reviews.llvm.org/D10732


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245937 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-25 14:24:04 +00:00
Artem Belevich ebd9620ac7 Revert r245496 "[CUDA] Add appropriate host/device attribute to builtins."
It's breaking internal test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245592 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-20 18:28:56 +00:00
Artem Belevich 2063b03d43 [CUDA] Add appropriate host/device attribute to builtins.
Differential Revision: http://reviews.llvm.org/D12122

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245496 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-19 20:48:20 +00:00
Alex Denisov 4c1f4e71ba [ObjC] Circular containers: add support of subclasses
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244193 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 04:51:14 +00:00
Eric Christopher b70ce903c2 Rename the non-coding style conformant functions in namespace Builtins
to match the rest of their brethren and reformat the bits that need it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244186 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 01:01:12 +00:00
Douglas Gregor 61fd1cbc6d Warn when an Objective-C collection literal element is converted to an incompatible type.
Objective-C collection literals produce unspecialized
NSArray/NSDictionary objects that can then be implicitly converted to
specialized versions of these types. In such cases, check that the
elements in the collection are suitable for the specialized
collection. Part of rdar://problem/6294649.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241546 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-07 03:58:22 +00:00
Benjamin Kramer 247b5bd74b Switch users of the 'for (StmtRange range = stmt->children(); range; ++range)‘ pattern to range for loops.
The pattern was born out of the lack of range-based for loops in C++98
and is somewhat obscure. No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241300 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 21:03:14 +00:00
Ted Kremenek 55afcebf8e Parse 'technical term' format specifier.
Objective-C format strings now support modifier flags
that can be attached to a '@' conversion.  Currently
the only one supported, as of iOS 9 and OS X 10.11,
is the new "technical term", denoted by the flag "tt",
for example:

  %[tt]@

instead of just:

  %@

The 'tt' stands for "technical term", which is used
by the string-localization facilities on Darwin to
add the appropriate spacing or quotation depending
the language locale.

Implements <rdar://problem/20374720>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241243 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 05:39:16 +00:00
Eric Christopher 75230d1635 Add support for the x86 builtin __builtin_cpu_supports.
This matches the implementation of the gcc support for the same
feature, including checking the values set up by libgcc at runtime.
The structure looks like this:

  unsigned int __cpu_vendor;
  unsigned int __cpu_type;
  unsigned int __cpu_subtype;
  unsigned int __cpu_features[1];

with a set of enums to match various fields that are field out after
parsing the output of the cpuid instruction.
This also adds a set of errors checking for valid input (and cpu).

compiler-rt support for this and the other builtins in this family
(__builtin_cpu_init and __builtin_cpu_is) are forthcoming.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240994 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-29 21:00:05 +00:00
Alexander Kornienko 8ca7705aa3 Revert r240270 ("Fixed/added namespace ending comments using clang-tidy").
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240353 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-22 23:07:51 +00:00
Alexander Kornienko ac58acc7f2 Fixed/added namespace ending comments using clang-tidy. NFC
The patch is generated using this command:

  $ tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \
      -checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \
      work/llvm/tools/clang

To reduce churn, not touching namespaces spanning less than 10 lines.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240270 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-22 09:47:44 +00:00
Douglas Gregor 1bfd760890 Diagnose unsafe uses of nil and __nonnull pointers.
This generalizes the checking of null arguments to also work with
values of pointer-to-function, reference-to-function, and block
pointer type, using the nullability information within the underling
function prototype to extend non-null checking, and diagnoses returns
of 'nil' within a function with a __nonnull return type.

Note that we don't warn about nil returns from Objective-C methods,
because it's common for Objective-C methods to mimic the nil-swallowing
behavior of the receiver by checking ostensibly non-null parameters
and returning nil from otherwise non-null methods in that
case.

It also diagnoses (via a separate flag) conversions from nullable to
nonnull pointers. It's a separate flag because this warning can be noisy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240153 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-19 18:13:19 +00:00
Luke Cheeseman 514068cf49 This patch implements clang support for the ACLE special register intrinsics
in section 10.1, __arm_{w,r}sr{,p,64}.

This includes arm_acle.h definitions with builtins and codegen to support
these, the intrinsics are implemented by generating read/write_register calls
which get appropriately lowered in the backend based on the register string
provided. SemaChecking is also implemented to fault invalid parameters.

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239737 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-15 17:51:01 +00:00
David Majnemer 859130900e [Sema] Make the atomic builtins more efficient by reducing volatility
The parameter types and return type do not need to be volatile just
because the pointer type's pointee type is volatile qualified.  This is
an unnecessary pessimization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238892 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-03 00:26:35 +00:00
David Majnemer d1fd52a88f [Sema] Don't use dyn_cast to detect an AtomicType
An AtomicType might be hidden behind arbitrary levels of typedefs.
getAs<> will reliably walk through the sugar to get the underlying
AtomicType.

This fixes PR23638.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238083 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-23 01:32:17 +00:00
Kevin Qin d13c501b4c [AArch64 ACLE] Allow to define poly64_t as 'unsigned long long' on LLP64 system.
This fixes PR23414 as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@237348 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-14 08:18:05 +00:00
Ulrich Weigand df57d49150 [SystemZ] Add support for z13 low-level vector builtins
This adds low-level builtins to allow access to all of the z13 vector
instructions.  Note that instructions whose semantics can be described
by standard C (including clang extensions) do not get any builtins.

For each instructions whose semantics *cannot* (fully) be described, we
define a builtin named __builtin_s390_<insn> that directly maps to this
instruction.  These are intended to be compatible with GCC.

For instructions that also set the condition code, the builtin will take
an extra argument of type "int *" at the end.  The integer pointed to by
this argument will be set to the post-instruction CC value.

For many instructions, the low-level builtin is mapped to the corresponding
LLVM IR intrinsic.  However, a number of instructions can be represented
in standard LLVM IR without requiring use of a target intrinsic.

Some instructions require immediate integer operands within a certain
range.  Those are verified at the Sema level.

Based on a patch by Richard Sandiford.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236532 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-05 19:36:42 +00:00
Aaron Ballman 24aae829f9 Extend format specifier checking to include field function pointers in addition to variable function pointers. Addresses PR21082.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235606 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-23 16:14:19 +00:00
Nemanja Ivanovic 1ed200ed06 Add Clang support for remaining integer divide and permute instructions from ISA 2.06
This patch corresponds to review:
http://reviews.llvm.org/D8398

It adds some builtin functions to access the extended divide and bit permute instructions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234547 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-09 23:58:16 +00:00
David Majnemer 3a19309ae0 [Sema] Diagnose references to unbound arrays in function definitions
A [*] is only allowed in a declaration for a function, not in its
definition.  We didn't correctly recurse on reference types while
looking for it, causing us to crash in CodeGen instead of rejecting it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234528 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-09 19:53:25 +00:00
David Majnemer b3aaa7dd2d [Sema] Correctly recurse when looking for [*] in function definitions
A [*] is only allowed in a declaration for a function, not in its
definition.  We didn't correctly recurse while looking for it, causing
us to crash in CodeGen instead of rejecting it.

This fixes PR23151.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234363 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-07 22:08:51 +00:00
Ulrich Weigand 5f71cb31d8 [SystemZ] Support transactional execution on zEC12
The zEC12 provides the transactional-execution facility.  This is exposed
to users via a set of builtin routines on other compilers.  This patch
adds clang support to enable those builtins.  In partciular, the patch:

- enables the transactional-execution feature by default on zEC12
- allows to override presence of that feature via the -mhtm/-mno-htm options
- adds a predefined macro __HTM__ if the feature is enabled
- adds support for the transactional-execution GCC builtins
- adds Sema checking to verify the __builtin_tabort abort code
- adds the s390intrin.h header file (for GCC compatibility)
- adds s390 sections to the htmintrin.h and htmxlintrin.h header files

Since this is first use of target-specific intrinsics on the platform,
the patch creates the include/clang/Basic/BuiltinsSystemZ.def file and
hooks it up in TargetBuiltins.h and lib/Basic/Targets.cpp.

An associated LLVM patch adds the required LLVM IR intrinsics.

For reference, the transactional-execution instructions are documented
in the z/Architecture Principles of Operation for the zEC12:
http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/download/DZ9ZR009.pdf
The associated builtins are documented in the GCC manual:
http://gcc.gnu.org/onlinedocs/gcc/S_002f390-System-z-Built-in-Functions.html
The htmxlintrin.h intrinsics provided for compatibility with the IBM XL
compiler are documented in the "z/OS XL C/C++ Programming Guide".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233804 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-01 12:54:25 +00:00
Kit Barton e434e379e8 [PPC] Move argument range checks for HTM and crypto builtins to Sema
The argument range checks for the HTM and Crypto builtins were implemented in
CGBuiltin.cpp, not in Sema. This change moves them to the appropriate location
in SemaChecking.cpp. It requires the creation of a new method in the Sema class
to do checks for PPC-specific builtins.

http://reviews.llvm.org/D8672


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233586 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-30 19:40:59 +00:00
Nico Weber 4faaf80dcb -Wdynamic-class-memaccess: Also warn about array types.
It looks like not warning on this was an oversight in the original
implementation of this warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232900 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-21 17:56:44 +00:00
Nico Weber a09d43eebb Dedent code for -Wdynamic-class-memaccess warning. No behavior change.
The diff looks intimidating, but this just moves the -Wdynamic-class-memaccess
code out a scope, protected by a

    if (PointeeTy == QualType())
      continue;

check so that it still only runs when it should.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232899 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-21 17:37:46 +00:00
David Majnemer faf9eba98b MS ABI: Accept calls to an unprototyped declaration of _setjmp
This fixes PR22961.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232824 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-20 17:03:35 +00:00
Gabor Horvath 595cdb14c6 [clang] Replacing asserts with static_asserts where appropriate
Summary: This patch consists of the suggestions of clang-tidy/misc-static-assert check.

Reviewers: alexfh

Subscribers: dblaikie, xazax.hun, cfe-commits

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

Patch by Szabolcs Sipos!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232367 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-16 09:59:54 +00:00
Dmitri Gribenko 4e5b0884d2 -Wempty-body: fix false negative triggered by macros
When if statement condition ended in a macro:

    if (ptr == NULL);

the check used to consider the definition location of NULL, instead of the
current line.

Patch by Manasij Mukherjee.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232295 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-15 01:08:23 +00:00
David Majnemer b986906ec9 MS ABI: Implement __GetExceptionInfo for std::make_exception_ptr
std::make_exception_ptr calls std::__GetExceptionInfo in order to figure
out how to properly copy the exception object.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232188 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-13 18:26:17 +00:00
Sanjay Patel b0da26f02f [X86, AVX2] Replace inserti128 and extracti128 intrinsics with generic shuffles
This is nearly identical to the v*f128_si256 parts of r231792 and r232052.

AVX2 introduced proper integer variants of the hacked integer insert/extract
C intrinsics that were created for this same functionality with AVX1.

This should complete the front end fixes for insert/extract128 intrinsics. 
Corresponding LLVM patch to follow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232109 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 21:54:24 +00:00
Sanjay Patel eb2c10166c [X86, AVX] replace vextractf128 intrinsics with generic shuffles
This is very much like D8088 (checked in at r231792).

Now that we've replaced the vinsertf128 intrinsics,
do the same for their extract twins.

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232052 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 15:50:36 +00:00
Joerg Sonnenberger ff77c7dac3 Under duress, move check for target support of __builtin_setjmp/
__builtin_longjmp to Sema as requested by John McCall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231986 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-11 23:46:32 +00:00
Sanjay Patel a283317acc [X86, AVX] Replace vinsertf128 intrinsics with generic shuffles.
We want to replace as much custom x86 shuffling via intrinsics
as possible because pushing the code down the generic shuffle
optimization path allows for better codegen and less complexity
in LLVM.

This is the sibling patch for the LLVM half of this change:
http://reviews.llvm.org/D8086

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231792 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-10 15:19:26 +00:00
Benjamin Kramer 97b013b9e9 Make helper functions static
NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231657 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-09 15:03:32 +00:00
Alex Denisov 5dc6c6cd87 New ObjC warning: circular containers.
This commit adds new warning to prevent user from creating 'circular containers'.

Mutable collections from NSFoundation allows user to add collection to itself, e.g.: 

NSMutableArray *a = [NSMutableArray new]; 
[a addObject:a]; 

The code above leads to really weird behaviour (crashes, 'endless' recursion) and 
retain cycles (collection retains itself) if ARC enabled.

Patch checks the following collections: 
  - NSMutableArray, 
  - NSMutableDictionary, 
  - NSMutableSet, 
  - NSMutableOrderedSet, 
  - NSCountedSet. 



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231265 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 17:55:52 +00:00
Daniel Jasper 6dbca70fba Move one more diagnostic into the new -Wformat-pedantic group.
This was apparently overlooked in r231211.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231242 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 14:18:20 +00:00
Seth Cantrell 1cb60abfa2 AT.isValid() should come before AT.matchesType()
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231213 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 05:58:08 +00:00
Seth Cantrell c0b2b33b16 Add a format warning for "%p" with non-void* args
GCC -pedantic produces a format warning when the "%p" specifier is used with
arguments that are not void*. It's useful for portability to be able to
catch such warnings with clang as well. The warning is off by default in
both gcc and with this patch. This patch enables it either when extensions
are disabled with -pedantic, or with the specific flag -Wformat-pedantic.

The C99 and C11 specs do appear to require arguments corresponding to 'p'
specifiers to be void*: "If any argument is not the correct type for the
corresponding conversion specification, the behavior is undefined."
[7.19.6.1 p9], and of the 'p' format specifier "The argument shall be a
pointer to void." [7.19.6.1 p8]

Both printf and scanf format checking are covered.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231211 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 03:12:10 +00:00
Benjamin Kramer fa284a3516 Sema: Remove stray static
This is a real bug if the code path is ever used with different pointer
sizes in the same process.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230893 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-01 18:09:50 +00:00
Fariborz Jahanian 24feb0432e Patch to prevent crash when default argument expression
is null due to its previous bad declaration, etc.
rdar://19871240


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230649 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-26 17:59:54 +00:00
Craig Topper a0ec99454a [X86] Remove the blendps/blendpd builtins. They aren't used by the intrinsic headers. We use appropriate shuffle vector instead.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230616 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-26 08:09:05 +00:00
Craig Topper dab0c3f047 [X86] Correct immediate range checking for blendps/blendpd/blendpd256 builtins.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230615 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-26 06:23:15 +00:00
David Majnemer 21bc4ac3ae Sema: __assume with side effects shouldn't result in invalid AST nodes
We'd diagnose an __assume expression which contained a function call.
This would result in us wrongly returning ExprError, causing mysterious
failures later on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230597 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-26 00:57:33 +00:00