Commit Graph

105614 Commits

Author SHA1 Message Date
Anders Carlsson 9bd7d16440 When emitting the destructor for a class with a vtable, if we can determine
that the destructor body is trivial and that all member variables also have either
trivial destructors or trivial destructor bodies, we don't need to initialize the
vtable pointers since no virtual member functions will be called on the destructor.

Fixes PR9181.

llvm-svn: 131368
2011-05-14 23:26:09 +00:00
Nico Weber 1eace078a4 Let clang-check actually use the Directory entry in the json file.
llvm-svn: 131367
2011-05-14 21:20:23 +00:00
John McCall 5880fb8edf Only perform the null-initialization of an aggregate result of a message
send if the receiver is null.  Normally it's not worthwhile to check this,
but avoiding the null-initialization is nice, and this also avoids nasty
problems where the null-initialization is visible within the call because
we use an aliased result buffer.  rdar://problem/9402992

llvm-svn: 131366
2011-05-14 21:12:11 +00:00
Argyrios Kyrtzidis dd72aafffc Create proper Objective-C @encoding for C++ classes; fixes rdar://9357400.
Go through and expand the members of bases into the encoding string (and encode the VTable as well).
Unlike gcc which expands virtual bases as many times as they appear in the
hierarchy, clang will only expand them once at the end, to reflect the actual layout.

Note that there doesn't seem to be a way to indicate in the encoding that
packing/alignment of members is different that normal, in which case
the encoding will be out-of-sync with the real layout.
If the runtime switches to just consider the size of types without
taking into account alignment, we could easily make padding explicit in the
encoding (e.g. using arrays of chars). The encoding strings would be
longer then though.

Also encode a flexible array member as array of 0 size, like gcc, not as a pointer.

llvm-svn: 131365
2011-05-14 20:32:43 +00:00
Argyrios Kyrtzidis 7da04c6367 Emit an error when trying to @encode an incomplete type.
There are APIs, e.g. [NSValue valueWithBytes:objCType:], which use the encoding to find out
the size of an object pointed to by a pointer. Make things safer by making it illegal to @encode
incomplete types.

llvm-svn: 131364
2011-05-14 20:32:39 +00:00
Benjamin Kramer cb7e56e592 Disable test harder.
llvm-svn: 131363
2011-05-14 19:30:39 +00:00
Francois Pichet c2fac71c75 Revert 131347. It asserts if the specialization in within a class template:
template<class U> 
struct X1 {
  template<class T> void f(T*);
  template<> void f(int*) { } 
};

Won't be so simple. I need to think more about it.

llvm-svn: 131362
2011-05-14 19:17:07 +00:00
Tobias Grosser f6ed8ffd69 www: Colorize TODO status
llvm-svn: 131361
2011-05-14 19:02:51 +00:00
Tobias Grosser 5d6eb86965 CodeGeneration: Cleanup getAnalysis/addPreserved
llvm-svn: 131360
2011-05-14 19:02:45 +00:00
Tobias Grosser 3fdecaee2a CodeGeneration: Localize variables
llvm-svn: 131359
2011-05-14 19:02:39 +00:00
Tobias Grosser abb6dcd865 CodeGeneration: Admit that we change the code.
No need to pretend anymore that we do not update the LLVM-IR.

llvm-svn: 131358
2011-05-14 19:02:34 +00:00
Tobias Grosser 2aec339d28 Cloog: Export clast_root
llvm-svn: 131357
2011-05-14 19:02:29 +00:00
Tobias Grosser e91c53d2a9 CodeGeneration: No need to forget SCoP.
As we do not delete the SCoP, there is no need to remove it from the SCoP
detection.

llvm-svn: 131356
2011-05-14 19:02:21 +00:00
Tobias Grosser 678dbbf3b0 CodeGeneration: We do not preserve the PostDominatorTree
llvm-svn: 131355
2011-05-14 19:02:12 +00:00
Tobias Grosser 30aa24cd6b ScheduleOptimizer: Add an isl based schedule optimizer
The isl based routines implement a new interpretation of the Pluto algorithm
new interpretation. This patch requires a recent version of isl to be installed.

llvm-svn: 131354
2011-05-14 19:02:06 +00:00
Tobias Grosser 7a16c895ac CodeGeneration: Remove -polly-codegen-only
If we only want to optimize a single function, we should extract this function
into a separate .ll file. This simplifies the code.

llvm-svn: 131353
2011-05-14 19:01:55 +00:00
Tobias Grosser 8c4cfc327b CodeGeneration: Do not delete the old version of the Scop.
Instead of deleting the old code, keep it on the side in an if-branch. It will
either be deleted by the dead code elimination or we can use it as fallback.

llvm-svn: 131352
2011-05-14 19:01:49 +00:00
Tobias Grosser 76d7c529fb CodeGeneration: Support only simple regions
llvm-svn: 131351
2011-05-14 19:01:37 +00:00
Stuart Hastings 3c2fd1cf62 Disable this test while I revise it. rdar://problem/9267970
llvm-svn: 131350
2011-05-14 18:39:05 +00:00
Alexis Hunt 22b5b13ce3 Make sure we actually generate defaulted copy constructors; caught by
Howard Hinnant. Thanks!

llvm-svn: 131349
2011-05-14 18:20:50 +00:00
Howard Hinnant b12c37b302 Fix type-o found by Justin Hibbits
llvm-svn: 131348
2011-05-14 18:20:45 +00:00
Francois Pichet 6744e14d9c In Microsoft mode, allow template function explicit specialization at class scope.
Necessary to parse MFC and MSVC standard lib code.

Example:
struct X {
  template<class T> void f(T) { }
  template<> void f(int) { } 
}

llvm-svn: 131347
2011-05-14 17:46:46 +00:00
Howard Hinnant 6db38ae05c Fix type-o found by Justin Hibbits
llvm-svn: 131346
2011-05-14 17:24:22 +00:00
Benjamin Kramer d96205c4e5 SimplifyCFG: Use ComputeMaskedBits to prune dead cases from switch instructions.
llvm-svn: 131345
2011-05-14 15:57:25 +00:00
Howard Hinnant af6c26b366 Warning suppression in test.
llvm-svn: 131344
2011-05-14 15:38:08 +00:00
Howard Hinnant 3962348edf Warning suppression in test.
llvm-svn: 131343
2011-05-14 15:36:25 +00:00
Richard Smith 0c4a34b1a0 PR9908: Fix the broken fix for PR9902 to get the template argument lists in the right order.
Also, don't reject alias templates in all ElaboratedTypes: some ElaboratedTypes do not correspond to elaborated-type-specifiers.

llvm-svn: 131342
2011-05-14 15:04:18 +00:00
Howard Hinnant 6c4c6a8047 Warning suppression in test.
llvm-svn: 131341
2011-05-14 14:53:12 +00:00
Howard Hinnant c6b9ff1169 Correction to hexfloat hack.
llvm-svn: 131340
2011-05-14 14:33:56 +00:00
Stuart Hastings 66a82b966e Avoid combining GEPs that might overflow at runtime.
rdar://problem/9267970

Patch by Julien Lerouge!

llvm-svn: 131339
2011-05-14 05:55:10 +00:00
Alexis Hunt c9a5573ef1 What I hope to be an implementation of defaulted copy assignment
operators.

llvm-svn: 131338
2011-05-14 05:23:28 +00:00
Alexis Hunt b2f2780a16 More progress towards defaulted copy assignment
llvm-svn: 131337
2011-05-14 05:23:24 +00:00
Alexis Hunt 119f365d31 Start implementing defaulted copy assignment
llvm-svn: 131336
2011-05-14 05:23:20 +00:00
John McCall 9e8bb000d8 Objective-C vtables are not taking the world by storm; call them
out as "v-table" message sends and stop calling normal messages "legacy"
message sends.

Also, fix some comments to reveal the true state of affairs.

llvm-svn: 131335
2011-05-14 03:10:52 +00:00
Greg Clayton 2a48f525cd Expand the ABI prepare trivial function call to allow 6 simple args.
llvm-svn: 131334
2011-05-14 01:50:35 +00:00
Jim Ingham a16b5be727 Breakpoint::Description with eDescriptionLevelBrief should just print the number of locations, printing the list of locations is pointless.
llvm-svn: 131333
2011-05-14 01:11:02 +00:00
Eli Friedman 8f1e11cde9 Fix a FIXME by moving the fast-isel implementation of the objectsize intrinsic from the x86 code to the generic code.
llvm-svn: 131332
2011-05-14 00:47:51 +00:00
Jim Ingham 67eb68d260 For the purposes of setting breakpoints treat methods defined in the class and methods defined in a category on the class as the same.
llvm-svn: 131331
2011-05-14 00:40:37 +00:00
Rafael Espindola df9db7ed92 Don't produce a vmovntdq if we don't have AVX support.
llvm-svn: 131330
2011-05-14 00:30:01 +00:00
Eli Friedman f080a57b81 Zap useless code; this hasn't done anything useful since fast-isel switched to being bottom-up (a very long time ago).
llvm-svn: 131329
2011-05-14 00:19:32 +00:00
Howard Hinnant e0d67710e9 Fix test bug.
llvm-svn: 131328
2011-05-14 00:07:53 +00:00
Howard Hinnant fe7cffaf57 Suppress some warings in the tests.
llvm-svn: 131327
2011-05-14 00:04:05 +00:00
Howard Hinnant a7fa0710cb Suppress some warings in the tests.
llvm-svn: 131326
2011-05-13 23:59:50 +00:00
John McCall 8a2548f6e0 Add an operator+= for appending StringRefs onto std::strings.
Previously this pattern would be compiled using an implicit conversion
to std::string.

llvm-svn: 131325
2011-05-13 23:58:45 +00:00
Johnny Chen c8134cee01 Clean up the test a little bit; and use lldbutil.get_GPRs(frame) to retrieve the general purpose register set.
llvm-svn: 131324
2011-05-13 23:42:44 +00:00
John McCall 234eac88ae Reorganize this method to avoid multiple calls for computing CGFunctionInfo
and to decrease the amount of effort in appending strings.

llvm-svn: 131323
2011-05-13 23:16:18 +00:00
Jim Grosbach f6b1846f39 Be a bit more permissive about symbols we don't understand. Just skip them
rather than throwing an error.

llvm-svn: 131322
2011-05-13 23:11:30 +00:00
Joerg Sonnenberger be7850dd8a Simplify
llvm-svn: 131321
2011-05-13 22:58:37 +00:00
Dylan Noblesmith 0bd34fbd01 ExecutionEngine: move createJIT() definition (v2)
As an ExecutionEngine class function, its definition
really belongs in ExecutionEngine.cpp, not JIT.cpp.

llvm-svn: 131320
2011-05-13 22:02:53 +00:00
Johnny Chen b411b980ac Test commit from a git-svn-cloned lldb/trunk repository.
llvm-svn: 131319
2011-05-13 21:55:30 +00:00