Evan Cheng
104dbb0fd1
For x86, canonicalize max
...
(x > y) ? x : y
=>
(x >= y) ? x : y
So for something like
(x - y) > 0 : (x - y) ? 0
It will be
(x - y) >= 0 : (x - y) ? 0
This makes is possible to test sign-bit and eliminate a comparison against
zero. e.g.
subl %esi, %edi
testl %edi, %edi
movl $0, %eax
cmovgl %edi, %eax
=>
xorl %eax, %eax
subl %esi, $edi
cmovsl %eax, %edi
rdar://10633221
llvm-svn: 147512
2012-01-04 01:41:39 +00:00
Rafael Espindola
f90b6d1580
Revert r147493. It broke test/CodeGenObjC/constant-strings.m.
...
llvm-svn: 147511
2012-01-04 01:32:19 +00:00
Kostya Serebryany
842ae27ae3
[asan] one more test for asan instrumentation: (*a)++ should be instrumented only once.
...
llvm-svn: 147509
2012-01-04 01:02:14 +00:00
Ted Kremenek
990464cb30
Teach the static analyzer to not treat XPC types as CF types.
...
llvm-svn: 147506
2012-01-04 00:35:48 +00:00
Ted Kremenek
e8300e5eba
Minor code formatting cleanups.
...
llvm-svn: 147505
2012-01-04 00:35:45 +00:00
Fariborz Jahanian
1fc1c6c307
In non-gc, non-arc mode, property of 'Class' type
...
variety is treated as a 'void *'. No need to issue
warning reserved for objc object properties.
// rdar://10565506
llvm-svn: 147504
2012-01-04 00:31:53 +00:00
Eli Friedman
90dc17510b
Get rid of an unnecessary check; the AST for init-lists is the same independent of whether we're in C++11 mode.
...
llvm-svn: 147503
2012-01-03 23:54:05 +00:00
Chris Lattner
6b77a07f75
Turn a few more inline asm errors into "emitErrors" instead of fatal errors.
...
Before we'd get:
$ clang t.c
fatal error: error in backend: Invalid operand for inline asm constraint 'i'!
Now we get:
$ clang t.c
t.c:16:5: error: invalid operand for inline asm constraint 'i'!
"movq (%4), %%mm0\n"
^
Which at least gets us the inline asm that is the problem.
llvm-svn: 147502
2012-01-03 23:51:01 +00:00
Chris Lattner
e22e613128
generalize LLVMContext::emitError to take a twine instead of a StringRef.
...
llvm-svn: 147501
2012-01-03 23:47:05 +00:00
Ted Kremenek
134a83a799
Enhance UnixAPIChecker to also warn about zero-sized allocations to calloc() and realloc(). Patch by Cyril Roelandt!
...
llvm-svn: 147500
2012-01-03 23:43:13 +00:00
Douglas Gregor
6aeecf1791
Minor tweak to name lookup for C/Objective-C: after the first name, still consider whether this is a redeclaration lookup when determining whether to look for the visible declaration
...
llvm-svn: 147499
2012-01-03 23:34:23 +00:00
Douglas Gregor
b59643baf6
Test "merging" of typedef types across distinct modules. At present,
...
the AST reader doesn't actually perform a merge, because name lookup
knows how to merge identical typedefs together.
As part of this, teach C/Objective-C name lookup to return multiple
results in all cases, rather than first digging through the attributes
to see if the value is overloadable. This way, we'll catch ambiguous
lookups in C/Objective-C.
llvm-svn: 147498
2012-01-03 23:26:26 +00:00
Marshall Clow
f83663a9cd
Don't allocate TLS storage when checking to see if an exception has been thrown - really
...
llvm-svn: 147497
2012-01-03 23:26:09 +00:00
Eli Friedman
b9c7129012
Support constant evaluation for OpenCL nested vector literals. Patch by Anton Lokhmotov.
...
llvm-svn: 147496
2012-01-03 23:24:20 +00:00
Chad Rosier
6ca97df951
Fix 80-column violations.
...
llvm-svn: 147495
2012-01-03 23:19:12 +00:00
Ted Kremenek
b3512d3a48
Add initial version of checker to check if virtual member functions are called transitively
...
from C++ constructors or destructors. Checker by Lei Zhang with a few tweaks by Ted Kremenek.
llvm-svn: 147494
2012-01-03 23:18:57 +00:00
David Chisnall
31640e1606
Initialise constant Objective-C string isa pointers with a weak reference to the class, so that they are usable in +load methods if the string class has been compiled with clang - if it's been compiled with GCC, the ABI makes this impossible. (GNU runtimes)
...
llvm-svn: 147493
2012-01-03 23:18:17 +00:00
Marshall Clow
3e417e7a5c
Don't allocate TLS storage when checking to see if an exception has been thrown
...
llvm-svn: 147492
2012-01-03 23:10:20 +00:00
Jakob Stoklund Olesen
bd75a417f9
Don't use enums larger than 1 << 31 for target features.
...
Patch by Andy Zhang!
llvm-svn: 147491
2012-01-03 23:04:28 +00:00
Fariborz Jahanian
7249e36704
objc: diagnose misplacement of objc_suppress_autosynthesis
...
attribute.
llvm-svn: 147490
2012-01-03 22:52:32 +00:00
Chad Rosier
1ad2433690
Fixed by Chandler in r147434.
...
llvm-svn: 147489
2012-01-03 22:51:32 +00:00
Douglas Gregor
2009ceed82
Implement cross-module declaration merging for tag declarations, so
...
that if two modules A and B both contain a declaration of a tag such
as
struct X;
and those two modules are unrelated, the two declarations of X will be
merged into a single redeclaration chain.
llvm-svn: 147488
2012-01-03 22:46:00 +00:00
Jakob Stoklund Olesen
1b7f2a7638
Revert r146997, "Heed spill slot alignment on ARM."
...
This patch caused a miscompilation of oggenc because a frame pointer was
suddenly needed halfway through register allocation.
<rdar://problem/10625436>
llvm-svn: 147487
2012-01-03 22:34:35 +00:00
Jakob Stoklund Olesen
4043d92872
Assert when reserved registers have been assigned.
...
This can only happen if the set of reserved registers changes during
register allocation.
<rdar://problem/10625436>
llvm-svn: 147486
2012-01-03 22:34:31 +00:00
Nadav Rotem
6d31bac85e
Revert 147426 because it caused pr11696.
...
llvm-svn: 147485
2012-01-03 22:19:42 +00:00
Nadav Rotem
1e7dda13c8
Fix incorrect widening of the bitcast sdnode in case the incoming operand is integer-promoted.
...
llvm-svn: 147484
2012-01-03 22:12:28 +00:00
Ted Kremenek
950e534e60
Force set-xcode-analyzer to use the system version of Python installed on OS X.
...
llvm-svn: 147483
2012-01-03 22:05:57 +00:00
Douglas Gregor
173d499c25
Add __has_feature(objc_modules)
...
llvm-svn: 147482
2012-01-03 21:12:26 +00:00
Chad Rosier
493c1b3152
Enhance DAGCombine for transforming 128->256 casts into a vmovaps, rather
...
then a vxorps + vinsertf128 pair if the original vector came from a load.
rdar://10594409
llvm-svn: 147481
2012-01-03 21:05:52 +00:00
Douglas Gregor
26f9601698
Add a test for the driver-level -fmodules/-fno-modules flags.
...
llvm-svn: 147480
2012-01-03 21:04:31 +00:00
Ted Kremenek
b74c909b3c
Add test case for PR 9774, which got fixed along the way.
...
llvm-svn: 147479
2012-01-03 21:02:04 +00:00
Nick Lewycky
228f5b4ba3
Conform to the style guide; remove 'else' after 'return'. Also remove an extra
...
if-statement by turning it into an assert. No functionality change.
llvm-svn: 147474
2012-01-03 20:33:00 +00:00
Abramo Bagnara
9f3d1ac419
Added testcases for -Wdisabled-macro-expansion.
...
llvm-svn: 147473
2012-01-03 20:13:03 +00:00
Owen Anderson
fcc041eabf
Remove the restriction that target intrinsics can only involve legal types. Targets can perfects well support intrinsics on illegal types, as long as they are prepared to perform custom expansion during type legalization. For example, a target where i64 is illegal might still support the i64 intrinsic operation using pairs of i32's. ARM already does some expansions like this for non-intrinsic operations.
...
llvm-svn: 147472
2012-01-03 20:09:02 +00:00
Lang Hames
c405ac4429
Clarified assert text.
...
llvm-svn: 147471
2012-01-03 20:05:57 +00:00
Stepan Dyatkovskiy
e801459320
Fix for PR11652: assertion failures when Type.cpp is compiled with -Os
...
llvm-svn: 147470
2012-01-03 20:04:35 +00:00
Douglas Gregor
663b48f13b
Re-uglify #public and #private to #__public_macro and #__private_macro.
...
llvm-svn: 147469
2012-01-03 19:48:16 +00:00
Fariborz Jahanian
3c9707bd90
objc: use objc_suppress_autosynthesis attribute on classes
...
which should not be default synthesized.
llvm-svn: 147468
2012-01-03 19:46:00 +00:00
Douglas Gregor
da82e703d1
Eliminate the uglified keyword __import_module__ for importing
...
modules. This leaves us without an explicit syntax for importing
modules in C/C++, because such a syntax needs to be discussed
first. In Objective-C/Objective-C++, the @import syntax is used to
import modules.
Note that, under -fmodules, C/C++ programs can import modules via the
#include mechanism when a module map is in place for that header. This
allows us to work with modules in C/C++ without committing to a syntax.
llvm-svn: 147467
2012-01-03 19:32:59 +00:00
Joerg Sonnenberger
c2f91c37e8
Don't depend on undefined macros being 0, there are options for the
...
preprocessor to warn about it.
llvm-svn: 147466
2012-01-03 19:22:38 +00:00
Matt Beaumont-Gay
b982d8eb65
Fix malformed assert.
...
If anybody has strong feelings about 'default: assert(0 && "blah")' vs
'default: llvm_unreachable("blah")', feel free to regularize the instances of
each in this file.
llvm-svn: 147459
2012-01-03 19:03:59 +00:00
Bob Wilson
bf9a62dcad
Fix missing include of int_lib.h and ppc ifdef for FreeBSD.
...
Patch provided by Ed Schouten!
llvm-svn: 147458
2012-01-03 18:59:25 +00:00
Fariborz Jahanian
9d4d20af55
objc: introduce objc_suppress_autosynthesis class
...
attributes for later use.
llvm-svn: 147457
2012-01-03 18:45:41 +00:00
Eric Christopher
2007dc8892
Fix typo.
...
llvm-svn: 147456
2012-01-03 18:38:37 +00:00
Douglas Gregor
0bf886d41a
Under -fmodules, accept #public <macroname> and #private <macroname>
...
to make a macro public (the default for headers) or private,
respectively.
llvm-svn: 147455
2012-01-03 18:24:14 +00:00
Nick Lewycky
bc26b2d162
Fix typo in ruler. No functionality change.
...
llvm-svn: 147454
2012-01-03 18:22:43 +00:00
Devang Patel
c1215324a3
Intel style asm variant does not need '%' prefix.
...
llvm-svn: 147453
2012-01-03 18:22:10 +00:00
Douglas Gregor
22d0974b40
Introduce a non-uglified syntax for module imports in Objective-C:
...
@import identifier [. identifier]* ;
llvm-svn: 147452
2012-01-03 18:04:46 +00:00
Douglas Gregor
e097d4ba26
Don't attempt to merge a deserialized declaration with existing
...
declarations in the AST unless modules are enabled. This case doesn't
come up with precompiled headers, and it isn't cheap.
llvm-svn: 147451
2012-01-03 17:31:38 +00:00
Douglas Gregor
2c46b5bd07
Factor the merging of declarations in the AST reader out to a separate
...
member function template, since the behavior is identical for
ObjCInterfaceDecl and ObjCProtocolDecl. It's expected that all
redeclarable entities will have the same behavior.
llvm-svn: 147450
2012-01-03 17:27:13 +00:00