Bill Wendling
f7d4598b74
Pack ivar offsets together.
...
Ivar offsets for synthesized ivars are wrong, which could end up with a large
number of dirty pages because of ivar fixups at runtime. When we pack all of the
synthesized ivars into the same section, it limits the number of dirty pages
created. Place them in the "__DATA,__objc_ivar" section.
<rdar://problem/9374905>
llvm-svn: 130870
2011-05-04 21:37:25 +00:00
Nick Lewycky
480cb9918d
Record where the GCOV data files should be placed.
...
llvm-svn: 130866
2011-05-04 20:46:58 +00:00
Bill Wendling
6869b6abf8
Simplification noticed by Chris.
...
llvm-svn: 130864
2011-05-04 20:28:12 +00:00
Bill Wendling
5f9150b5b1
Convert the non-temporal store builtins to LLVM-native IR.
...
llvm-svn: 130830
2011-05-04 02:40:38 +00:00
Alexis Hunt
9d47faf686
Ensure that destructors are properly inovked when an exception leaves
...
the body of a delegating constructor call.
This means that the delegating constructor implementation should be
complete and correct, though there are some rough edges (diagnostic
quality with the cycle detection and using a deleted destructor).
llvm-svn: 130803
2011-05-03 23:05:34 +00:00
Fariborz Jahanian
fc0fe6eb52
Finish off rules for z-length bitfields in ms_struct
...
structs. // rdar://8823265
llvm-svn: 130783
2011-05-03 20:21:04 +00:00
Alexis Hunt
271c36811d
Fix delegating constructors stylistic issues.
...
Material bugfixes to come this afternoon.
llvm-svn: 130782
2011-05-03 20:19:28 +00:00
Devang Patel
04ab75c9ab
Function with internal linkage name do not have mangled name.
...
llvm-svn: 130736
2011-05-02 22:49:30 +00:00
Devang Patel
b7ff0da623
Do not try to get mangled name of block helpers. Apply a stopgap measure to fix SingleSource/UnitTests/block-copied-in-cxxobj compile time crash.
...
llvm-svn: 130734
2011-05-02 22:37:48 +00:00
Devang Patel
2a7c219466
Emit debug info for __destroy_helper_block_ and __copy_helper_block.
...
llvm-svn: 130719
2011-05-02 20:37:08 +00:00
Eli Friedman
30458b51e3
Skip extra copy from aggregate where it isn't necessary; rdar://problem/8139919 . This shouldn't make much of a difference at -O3, but should substantially reduce the number of generated memcpy's at -O0.
...
llvm-svn: 130717
2011-05-02 20:24:29 +00:00
Eli Friedman
f4258eb484
Switch CallArgList from an std::pair to a new CallArg struct (which will eventually gain more members). Working towards modifying call emission to avoid unnecessary copies.
...
llvm-svn: 130700
2011-05-02 18:05:27 +00:00
Eli Friedman
43dca6a8d2
Simplify code a bit by using CallArgList::add. No intended functionality change.
...
llvm-svn: 130699
2011-05-02 17:57:46 +00:00
Fariborz Jahanian
eb39741c0b
More rule enforcement of zero bitfields for ms_struct.
...
llvm-svn: 130696
2011-05-02 17:20:56 +00:00
Nick Lewycky
fc49f72b58
Remove unused variable spotted by GCC.
...
Devang, can we remove this call entirely? If I try that, "make check" passes
but the call has a side-effect of ensuring that the block's context exists in
the debug info. getContextDescriptor() is used in a void context for that side-
effect elsewhere in this file. Please take a look!
llvm-svn: 130679
2011-05-02 01:41:48 +00:00
Nick Lewycky
1c60a0bc98
Remove dead variable, flagged by gcc's -Wunused-but-set-variable.
...
llvm-svn: 130674
2011-05-02 00:46:56 +00:00
Nick Lewycky
b4175cad29
Remove dead variable flagged by gcc's -Wunused-but-set-variable. No
...
functionality change.
llvm-svn: 130673
2011-05-02 00:41:17 +00:00
Nick Lewycky
18a1ee7f51
Remove a dead variable flagged by gcc's -Wunused-but-set-variable. No
...
functionality change.
llvm-svn: 130672
2011-05-02 00:40:24 +00:00
Alexis Hunt
61bc173784
Fully implement delegating constructors!
...
As far as I know, this implementation is complete but might be missing a
few optimizations. Exceptions and virtual bases are handled correctly.
Because I'm an optimist, the web page has appropriately been updated. If
I'm wrong, feel free to downgrade its support categories.
llvm-svn: 130642
2011-05-01 07:04:31 +00:00
Rafael Espindola
e264187cf2
Implement -fno-dwarf2-cfi-asm.
...
llvm-svn: 130616
2011-04-30 18:35:43 +00:00
Devang Patel
a3e3fded0a
Tie constructor defintion with its declaration using AT_specification.
...
llvm-svn: 130561
2011-04-29 23:42:32 +00:00
Bob Wilson
9a5f84facb
Add -Oz option and use it to set the inline threshold to 25.
...
Radar 9333566. Patch by Chad Rosier!
llvm-svn: 130554
2011-04-29 22:49:50 +00:00
Fariborz Jahanian
52a8cca56f
removes a meaningless comment.
...
llvm-svn: 130550
2011-04-29 22:11:28 +00:00
Fariborz Jahanian
99514b9168
block variables on lhs need be ir-gen'ed after the
...
rhs when its 'forwarding' pointer may be modified
in rhs evaluation as result of call to Block_copy.
// rdar://9309454
llvm-svn: 130545
2011-04-29 21:53:21 +00:00
David Chisnall
10d2ded910
Don't crash if the AST doesn't have a sensible ObjC id type.
...
llvm-svn: 130500
2011-04-29 14:10:35 +00:00
Fariborz Jahanian
6d003c3041
Fixes debug info generation problem for ms_struct structs.
...
// rdar://8823265
llvm-svn: 130458
2011-04-28 23:43:23 +00:00
Argyrios Kyrtzidis
03535265ef
Cut down unnecessary zero'ing when value-initializing arrays of C++ objects.
...
-C++ objects with user-declared constructor don't need zero'ing.
-We can zero-initialize arrays of C++ objects in "bulk" now, in which case don't zero-initialize each object again.
llvm-svn: 130453
2011-04-28 22:57:55 +00:00
Fariborz Jahanian
8409bce4ac
ms_struct patch for initialization and field access irgen.
...
// rdar://8823265 - wip.
llvm-svn: 130451
2011-04-28 22:49:46 +00:00
Stuart Hastings
9f02fd9d8d
Raise ARM byval minimum size from 32 to 64, addressing a performance
...
regression in mason. rdar://problem/7662569
llvm-svn: 130444
2011-04-28 21:35:59 +00:00
Argyrios Kyrtzidis
9d3c504078
Get the base element type even in multidimensional arrays.
...
llvm-svn: 130427
2011-04-28 20:07:15 +00:00
Stuart Hastings
dd77c8efa2
Replace unitary array with scalar. rdar://problem/7662569
...
llvm-svn: 130423
2011-04-28 19:24:47 +00:00
Argyrios Kyrtzidis
e07425a5e7
When value-initializing the elements of an array not not included in the initializer make sure
...
that a non-trivial C++ constructor gets called.
Fixes rdar://9347552 & http://llvm.org/PR9801
llvm-svn: 130421
2011-04-28 18:53:58 +00:00
Stuart Hastings
4b21495e42
Replace SmallVector with an array, as suggested by Frits van Bommel. rdar://problem/7662569
...
llvm-svn: 130417
2011-04-28 18:16:06 +00:00
John McCall
a85af56e66
When block-capturing a variable with a non-trivial destructor,
...
make sure to mark the destructor. This normally isn't required,
because the destructor should have been marked as part of the
declaration of the local, but it's necessary when the variable
is a parameter because it's the call sites that are responsible
for those destructors.
llvm-svn: 130372
2011-04-28 02:15:35 +00:00
John Wiegley
1c0675e155
Parsing/AST support for Structured Exception Handling
...
Patch authored by Sohail Somani.
Provide parsing and AST support for Windows structured exception handling.
llvm-svn: 130366
2011-04-28 01:08:34 +00:00
John Wiegley
6242b6a688
Implementation of Embarcadero array type traits
...
Patch authored by John Wiegley.
These are array type traits used for parsing code that employs certain
features of the Embarcadero C++ compiler: __array_rank(T) and
__array_extent(T, Dim).
llvm-svn: 130351
2011-04-28 00:16:57 +00:00
Stuart Hastings
f2752a3938
Re-enable byval for ARM in clang. rdar://problem/7662569
...
llvm-svn: 130312
2011-04-27 17:24:02 +00:00
Fariborz Jahanian
595ec5d43c
Some refactoring of my ms_struct patch.
...
// rdar://8823265 related.
llvm-svn: 130311
2011-04-27 17:14:21 +00:00
Anders Carlsson
c5d3ba1aad
When compiling with -fno-threadsafe-statics, guard variables for globals with internal linkage don't have to be i64, i8 works just fine!
...
llvm-svn: 130286
2011-04-27 04:37:08 +00:00
Fariborz Jahanian
bcb23a180b
With ms_struct attribut, Zero-length bitfields following
...
non-bitfield members are ignore. // rdar://8823265 wip
llvm-svn: 130257
2011-04-26 23:52:16 +00:00
Devang Patel
e67eca43d6
We need pointer size in bits here.
...
llvm-svn: 130244
2011-04-26 21:16:49 +00:00
John McCall
0009fcc39e
Make yet another placeholder type, this one marking that an expression is a bound
...
member function, i.e. something of the form 'x.f' where 'f' is a non-static
member function. Diagnose this in the general case. Some of the new diagnostics
are probably worse than the old ones, but we now get this right much more
universally, and there's certainly room for improvement in the diagnostics.
llvm-svn: 130239
2011-04-26 20:42:42 +00:00
Daniel Dunbar
a59b0a6e3c
IRgen/Darwin: Fix refacto introduced in Triple changes.
...
llvm-svn: 130233
2011-04-26 19:43:00 +00:00
Eric Christopher
6f095d613a
Temporarily revert r130176, it appears to have broken a few tests.
...
llvm-svn: 130179
2011-04-26 01:02:04 +00:00
Devang Patel
420c8de92e
Emit intrinsic at current insert point, not at the end of current block.
...
llvm-svn: 130177
2011-04-25 23:52:27 +00:00
Stuart Hastings
83da03c2ab
Turn on byval parameters in Clang for ARM APCS. rdar://problem/7662569
...
llvm-svn: 130176
2011-04-25 23:48:12 +00:00
Devang Patel
4f325d1f0f
Simplify. There is no need to have a method to just call another method.
...
llvm-svn: 130175
2011-04-25 23:43:36 +00:00
Fariborz Jahanian
24ac1599fc
Generalize case for built-in expressions having
...
side-effect to generate their ir. Not just for
__builtin_expect. // rdar://9330105
llvm-svn: 130172
2011-04-25 23:10:07 +00:00
Fariborz Jahanian
5a866c0bf2
Ir-gen the side-effect(s) when __builtin_expect is
...
constant-folded. // rdar://9330105
llvm-svn: 130163
2011-04-25 22:30:02 +00:00
John Wiegley
f9f6584e95
t/clang/expr-traits
...
Patch authored by David Abrahams.
These two expression traits (__is_lvalue_expr, __is_rvalue_expr) are used for
parsing code that employs certain features of the Embarcadero C++ compiler.
llvm-svn: 130122
2011-04-25 06:54:41 +00:00