| #
74020868 |
| 22-Jan-2014 |
Mark Seaborn <[email protected]> |
Handle va_arg on struct types for the le32 target (PNaCl and Emscripten)
PNaCl and Emscripten can both handle va_arg IR instructions with struct type.
Also add a test to cover generating a va_arg I
Handle va_arg on struct types for the le32 target (PNaCl and Emscripten)
PNaCl and Emscripten can both handle va_arg IR instructions with struct type.
Also add a test to cover generating a va_arg IR instruction from va_arg in C on le32 (as already handled by VisitVAArgExpr() in CGExprScalar.cpp), which was not covered by a test before.
(This fixes https://code.google.com/p/nativeclient/issues/detail?id=2381)
Differential Revision: http://llvm-reviews.chandlerc.com/D2539
llvm-svn: 199830
show more ...
|
| #
0718a3a4 |
| 13-Jan-2014 |
Justin Bogner <[email protected]> |
CodeGen: Rename adjustFallThroughCount -> adjustForControlFlow
adjustFallThroughCount isn't a good name, and the documentation was even worse. This commit attempts to clarify what it's for and when
CodeGen: Rename adjustFallThroughCount -> adjustForControlFlow
adjustFallThroughCount isn't a good name, and the documentation was even worse. This commit attempts to clarify what it's for and when to use it.
llvm-svn: 199139
show more ...
|
| #
ef512b99 |
| 06-Jan-2014 |
Justin Bogner <[email protected]> |
CodeGen: Initial instrumentation based PGO implementation
llvm-svn: 198640
|
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3 |
|
| #
e1468322 |
| 11-Dec-2013 |
David Tweed <[email protected]> |
Add front-end infrastructure now address space casts are in LLVM IR.
With the introduction of explicit address space casts into LLVM, there's a need to provide a new cast kind the front-end can crea
Add front-end infrastructure now address space casts are in LLVM IR.
With the introduction of explicit address space casts into LLVM, there's a need to provide a new cast kind the front-end can create for C/OpenCL/CUDA and code to produce address space casts from those kinds when appropriate.
Patch by Michele Scandale!
llvm-svn: 197036
show more ...
|
|
Revision tags: llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1 |
|
| #
2d84e842 |
| 02-Oct-2013 |
Nick Lewycky <[email protected]> |
Thread a SourceLocation into the EmitCheck for "load_invalid_value". This occurs when scalars are loaded / undergo lvalue-to-rvalue conversion.
llvm-svn: 191808
|
| #
75807f23 |
| 20-Jul-2013 |
Eli Friedman <[email protected]> |
Make IgnoreParens() look through ChooseExprs.
This is the same way GenericSelectionExpr works, and it's generally a more consistent approach.
A large part of this patch is devoted to caching the va
Make IgnoreParens() look through ChooseExprs.
This is the same way GenericSelectionExpr works, and it's generally a more consistent approach.
A large part of this patch is devoted to caching the value of the condition of a ChooseExpr; it's needed to avoid threading an ASTContext into IgnoreParens().
Fixes <rdar://problem/14438917>.
llvm-svn: 186738
show more ...
|
| #
035b39e3 |
| 11-Jul-2013 |
Eli Friedman <[email protected]> |
Fix build.
Sorry about that.
llvm-svn: 186054
|
| #
be4504df |
| 11-Jul-2013 |
Eli Friedman <[email protected]> |
Simplify atomic load/store IRGen.
Also fixes a couple minor bugs along the way; see testcases.
llvm-svn: 186049
|
|
Revision tags: llvmorg-3.3.1-rc1 |
|
| #
a1c9d4d9 |
| 12-Jun-2013 |
Richard Smith <[email protected]> |
Simplify: we don't need any special-case lifetime extension when initializing declarations of reference type; they're handled by the general case handling of MaterializeTemporaryExpr.
llvm-svn: 1838
Simplify: we don't need any special-case lifetime extension when initializing declarations of reference type; they're handled by the general case handling of MaterializeTemporaryExpr.
llvm-svn: 183875
show more ...
|
| #
cc1b96d3 |
| 12-Jun-2013 |
Richard Smith <[email protected]> |
PR12086, PR15117
Introduce CXXStdInitializerListExpr node, representing the implicit construction of a std::initializer_list<T> object from its underlying array. The AST representation of such an ex
PR12086, PR15117
Introduce CXXStdInitializerListExpr node, representing the implicit construction of a std::initializer_list<T> object from its underlying array. The AST representation of such an expression goes from an InitListExpr with a flag set, to a CXXStdInitializerListExpr containing a MaterializeTemporaryExpr containing an InitListExpr (possibly wrapped in a CXXBindTemporaryExpr).
This more detailed representation has several advantages, the most important of which is that the new MaterializeTemporaryExpr allows us to directly model lifetime extension of the underlying temporary array. Using that, this patch *drastically* simplifies the IR generation of this construct, provides IR generation support for nested global initializer_list objects, fixes several bugs where the destructors for the underlying array would accidentally not get invoked, and provides constant expression evaluation support for std::initializer_list objects.
llvm-svn: 183872
show more ...
|
|
Revision tags: llvmorg-3.3.0, llvmorg-3.3.0-rc3 |
|
| #
be93c00a |
| 23-May-2013 |
Richard Smith <[email protected]> |
Fix assert on temporary std::initializer_list.
llvm-svn: 182615
|
|
Revision tags: llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1 |
|
| #
852c9db7 |
| 20-Apr-2013 |
Richard Smith <[email protected]> |
C++1y: Allow aggregates to have default initializers.
Add a CXXDefaultInitExpr, analogous to CXXDefaultArgExpr, and use it both in CXXCtorInitializers and in InitListExprs to represent a default ini
C++1y: Allow aggregates to have default initializers.
Add a CXXDefaultInitExpr, analogous to CXXDefaultArgExpr, and use it both in CXXCtorInitializers and in InitListExprs to represent a default initializer.
There's an additional complication here: because the default initializer can refer to the initialized object via its 'this' pointer, we need to make sure that 'this' points to the right thing within the evaluation.
llvm-svn: 179958
show more ...
|
| #
c8e01705 |
| 16-Apr-2013 |
John McCall <[email protected]> |
Standardize accesses to the TargetInfo in IR-gen.
Patch by Stephen Lin!
llvm-svn: 179638
|
| #
a8ec7eb9 |
| 07-Mar-2013 |
John McCall <[email protected]> |
Promote atomic type sizes up to a power of two, capped by MaxAtomicPromoteWidth. Fix a ton of terrible bugs with _Atomic types and (non-intrinsic-mediated) loads and stores thereto.
llvm-svn: 176658
|
| #
47fb9508 |
| 07-Mar-2013 |
John McCall <[email protected]> |
Change hasAggregateLLVMType, which conflates complex and aggregate types in a profoundly wrong way that has to be worked around in every call site, to getEvaluationKind, which classifies and distingu
Change hasAggregateLLVMType, which conflates complex and aggregate types in a profoundly wrong way that has to be worked around in every call site, to getEvaluationKind, which classifies and distinguishes between all of these cases.
Also, normalize the API for loading and storing complexes.
I'm working on a larger patch and wanted to pull these changes out, but it would have be annoying to detangle them from each other.
llvm-svn: 176656
show more ...
|
| #
bea4c3d8 |
| 07-Mar-2013 |
John McCall <[email protected]> |
Evaluate compound literals directly into the result aggregate when that aggregate isn't potentially aliased.
llvm-svn: 176654
|
| #
7865220d |
| 25-Jan-2013 |
Fariborz Jahanian <[email protected]> |
patch for PR9027 and // rdar://11861085 Title: [PR9027] volatile struct bug: member is not loaded at -O; This is caused by last flag passed to @llvm.memcpy being false, not honoring that aggregate h
patch for PR9027 and // rdar://11861085 Title: [PR9027] volatile struct bug: member is not loaded at -O; This is caused by last flag passed to @llvm.memcpy being false, not honoring that aggregate has at least one 'volatile' data member (even though aggregate itself has not been qualified as 'volatile'. As a result, optimization optimizes away the memcpy altogether. Patch review by John MaCall (I still need to fix up a test though).
llvm-svn: 173535
show more ...
|
| #
1b4fb3e0 |
| 20-Jan-2013 |
Guy Benyei <[email protected]> |
Implement OpenCL event_t as Clang builtin type, including event_t related OpenCL restrictions (OpenCL 1.2 spec 6.9)
llvm-svn: 172973
|
| #
ffd5551b |
| 02-Jan-2013 |
Chandler Carruth <[email protected]> |
Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to reflect the migration in r171366.
Re-sort the #include lines to reflect the new paths.
llvm-svn: 171369
|
| #
d82a2ce3 |
| 21-Dec-2012 |
Richard Smith <[email protected]> |
Reinstate r170806, reverted in r170835, with a fix use i1 instead of i8 for a value-initialized bool!
llvm-svn: 170837
|
| #
3df909d0 |
| 21-Dec-2012 |
NAKAMURA Takumi <[email protected]> |
Revert r170806, "Fix some bugs where we would sometimes use 0, not -1, when emitting a null constant of type pointer-to-data-member."
It broke stage2.
llvm-svn: 170835
|
| #
789ce142 |
| 20-Dec-2012 |
Richard Smith <[email protected]> |
Fix some bugs where we would sometimes use 0, not -1, when emitting a null constant of type pointer-to-data-member.
llvm-svn: 170806
|
|
Revision tags: llvmorg-3.2.0, llvmorg-3.2.0-rc3 |
|
| #
3a02247d |
| 04-Dec-2012 |
Chandler Carruth <[email protected]> |
Sort all of Clang's files under 'lib', and fix up the broken headers uncovered.
This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/util
Sort all of Clang's files under 'lib', and fix up the broken headers uncovered.
This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files.
I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers.
llvm-svn: 169237
show more ...
|
|
Revision tags: llvmorg-3.2.0-rc2 |
|
| #
16488472 |
| 16-Nov-2012 |
Richard Smith <[email protected]> |
A step towards sorting out handling of triviality of special members in C++11.
Separate out the notions of 'has a trivial special member' and 'has a non-trivial special member', and use them appropr
A step towards sorting out handling of triviality of special members in C++11.
Separate out the notions of 'has a trivial special member' and 'has a non-trivial special member', and use them appropriately. These are not opposites of one another (there might be no special member, or in C++11 there might be a trivial one and a non-trivial one). The CXXRecordDecl predicates continue to produce incorrect results, but do so in fewer cases now, and they document the cases where they might be wrong.
No functionality changes are intended here (they will come when the predicates start producing the right answers...).
llvm-svn: 168119
show more ...
|
|
Revision tags: llvmorg-3.2.0-rc1 |
|
| #
9c6890a7 |
| 01-Nov-2012 |
Richard Smith <[email protected]> |
Simplify: replace getContext().getLangOpts() with just getLangOpts().
llvm-svn: 167261
|