#
ee0ce302 |
| 17-May-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Refactor constant evaluation of typeid(T) to track a symbolic type_info object rather than tracking the originating expression.
This is groundwork for supporting polymorphic typeid expressions. (Not
Refactor constant evaluation of typeid(T) to track a symbolic type_info object rather than tracking the originating expression.
This is groundwork for supporting polymorphic typeid expressions. (Note that this somewhat regresses our support for DR1968, but it turns out that that never actually worked anyway, at least in non-trivial cases.)
This reinstates r360974, reverted in r360988, with a fix for a static_assert failure on 32-bit builds: force Type base class to have 8-byte alignment like the rest of Clang's AST nodes.
llvm-svn: 360995
show more ...
|
#
a971003e |
| 17-May-2019 |
Chris Bieneman <chris.bieneman@me.com> |
Revert Refactor constant evaluation of typeid(T) to track a symbolic type_info object rather than tracking the originating expression.
This reverts r360974 (git commit 7ee4307bd4450022c3c8777f43a40c
Revert Refactor constant evaluation of typeid(T) to track a symbolic type_info object rather than tracking the originating expression.
This reverts r360974 (git commit 7ee4307bd4450022c3c8777f43a40cc4f0ccc009)
llvm-svn: 360988
show more ...
|
#
7ee4307b |
| 17-May-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Refactor constant evaluation of typeid(T) to track a symbolic type_info object rather than tracking the originating expression.
This is groundwork for supporting polymorphic typeid expressions. (Not
Refactor constant evaluation of typeid(T) to track a symbolic type_info object rather than tracking the originating expression.
This is groundwork for supporting polymorphic typeid expressions. (Note that this somewhat regresses our support for DR1968, but it turns out that that never actually worked anyway, at least in non-trivial cases.)
llvm-svn: 360974
show more ...
|
Revision tags: llvmorg-8.0.1-rc1 |
|
#
d3d6f4f6 |
| 12-May-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix handling of objects under construction during constant expression evaluation.
It's not enough to just track the LValueBase that we're evaluating, we need to also track the path to the objects wh
Fix handling of objects under construction during constant expression evaluation.
It's not enough to just track the LValueBase that we're evaluating, we need to also track the path to the objects whose constructors are running.
This reinstates r360464 (reverted in r360531) with a workaround for an MSVC bug that previously caused the Windows bots to fail.
llvm-svn: 360537
show more ...
|
#
73e8b674 |
| 11-May-2019 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
Revert rL360499 and rL360464 from cfe/trunk: Reject attempts to call non-static member functions on objects outside their lifetime in constant expressions.
This is undefined behavior per [class.cdto
Revert rL360499 and rL360464 from cfe/trunk: Reject attempts to call non-static member functions on objects outside their lifetime in constant expressions.
This is undefined behavior per [class.cdtor]p2.
We continue to allow this for objects whose values are not visible within the constant evaluation, because there's no way we can tell whether the access is defined or not, existing code relies on the ability to make such calls, and every other compiler allows such calls. ........ Fix handling of objects under construction during constant expression evaluation.
It's not enough to just track the LValueBase that we're evaluating, we need to also track the path to the objects whose constructors are running. ........ Fixes windows buildbots
llvm-svn: 360531
show more ...
|
#
c0fe5eb3 |
| 10-May-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix handling of objects under construction during constant expression evaluation.
It's not enough to just track the LValueBase that we're evaluating, we need to also track the path to the objects wh
Fix handling of objects under construction during constant expression evaluation.
It's not enough to just track the LValueBase that we're evaluating, we need to also track the path to the objects whose constructors are running.
llvm-svn: 360464
show more ...
|
#
5b5e27af |
| 10-May-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Improve interface of APValuePathEntry.
llvm-svn: 360463
|
Revision tags: llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4 |
|
#
dd1ea8ab |
| 06-Mar-2019 |
Hans Wennborg <hans@hanshq.net> |
Inline asm constraints: allow ICE-like pointers for the "n" constraint (PR40890)
Apparently GCC allows this, and there's code relying on it (see bug).
The idea is to allow expression that would hav
Inline asm constraints: allow ICE-like pointers for the "n" constraint (PR40890)
Apparently GCC allows this, and there's code relying on it (see bug).
The idea is to allow expression that would have been allowed if they were cast to int. So I based the code on how such a cast would be done (the CK_PointerToIntegral case in IntExprEvaluator::VisitCastExpr()).
Differential Revision: https://reviews.llvm.org/D58821
llvm-svn: 355491
show more ...
|
Revision tags: llvmorg-8.0.0-rc3, llvmorg-7.1.0, llvmorg-7.1.0-rc1, llvmorg-8.0.0-rc2, llvmorg-8.0.0-rc1 |
|
#
2946cd70 |
| 19-Jan-2019 |
Chandler Carruth <chandlerc@gmail.com> |
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the ne
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository.
llvm-svn: 351636
show more ...
|
#
86285d2e |
| 16-Jan-2019 |
Leonard Chan <leonardchan@google.com> |
[Fixed Point Arithmetic] Add APFixedPoint to APValue
This adds APFixedPoint to the union of values that can be represented with an APValue.
Differential Revision: https://reviews.llvm.org/D56746
l
[Fixed Point Arithmetic] Add APFixedPoint to APValue
This adds APFixedPoint to the union of values that can be represented with an APValue.
Differential Revision: https://reviews.llvm.org/D56746
llvm-svn: 351368
show more ...
|
Revision tags: llvmorg-7.0.1, llvmorg-7.0.1-rc3, llvmorg-7.0.1-rc2, llvmorg-7.0.1-rc1 |
|
#
128719c4 |
| 13-Sep-2018 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix crash on call to __builtin_memcpy with a null pointer to an incomplete type.
Also improve the diagnostics for similar situations.
llvm-svn: 342192
|
Revision tags: llvmorg-7.0.0, llvmorg-7.0.0-rc3, llvmorg-7.0.0-rc2, llvmorg-7.0.0-rc1, llvmorg-6.0.1, llvmorg-6.0.1-rc3, llvmorg-6.0.1-rc2, llvmorg-6.0.1-rc1 |
|
#
4e2698ca |
| 10-Apr-2018 |
Akira Hatanaka <ahatanaka@apple.com> |
[ExprConstant] Use an AST node and a version number as a key to create an APValue and retrieve it from map Temporaries.
The version number is needed when a single AST node is visited multiple times
[ExprConstant] Use an AST node and a version number as a key to create an APValue and retrieve it from map Temporaries.
The version number is needed when a single AST node is visited multiple times and is used to create APValues that are required to be distinct from each other (for example, MaterializeTemporaryExprs in default arguments and VarDecls in loops).
rdar://problem/36505742
Differential Revision: https://reviews.llvm.org/D42776
llvm-svn: 329671
show more ...
|
Revision tags: llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1, llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2, llvmorg-6.0.0-rc1, llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2, llvmorg-5.0.1-rc1, llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1, llvmorg-4.0.1, llvmorg-4.0.1-rc3, llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1, llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2, llvmorg-4.0.0-rc1 |
|
#
402804b6 |
| 15-Dec-2016 |
Yaxun Liu <Yaxun.Liu@amd.com> |
Re-commit r289252 and r289285, and fix PR31374
llvm-svn: 289787
|
#
7849eeb0 |
| 14-Dec-2016 |
Nico Weber <nicolasweber@gmx.de> |
Revert 289252 (and follow-up 289285), it caused PR31374
llvm-svn: 289713
|
#
17c7f703 |
| 14-Dec-2016 |
Stephan Bergmann <sbergman@redhat.com> |
Replace APFloatBase static fltSemantics data members with getter functions
At least the plugin used by the LibreOffice build (<https://wiki.documentfoundation.org/Development/Clang_plugins>) indirec
Replace APFloatBase static fltSemantics data members with getter functions
At least the plugin used by the LibreOffice build (<https://wiki.documentfoundation.org/Development/Clang_plugins>) indirectly uses those members (through inline functions in LLVM/Clang include files in turn using them), but they are not exported by utils/extract_symbols.py on Windows, and accessing data across DLL/EXE boundaries on Windows is generally problematic.
Differential Revision: https://reviews.llvm.org/D26671
llvm-svn: 289647
show more ...
|
#
8f66b4b4 |
| 09-Dec-2016 |
Yaxun Liu <Yaxun.Liu@amd.com> |
Add support for non-zero null pointer for C and OpenCL
In amdgcn target, null pointers in global, constant, and generic address space take value 0 but null pointers in private and local address spac
Add support for non-zero null pointer for C and OpenCL
In amdgcn target, null pointers in global, constant, and generic address space take value 0 but null pointers in private and local address space take value -1. Currently LLVM assumes all null pointers take value 0, which results in incorrectly translated IR. To workaround this issue, instead of emit null pointers in local and private address space, a null pointer in generic address space is emitted and casted to local and private address space.
Tentative definition of global variables with non-zero initializer will have weak linkage instead of common linkage since common linkage requires zero initializer and does not have explicit section to hold the non-zero value.
Virtual member functions getNullPointer and performAddrSpaceCast are added to TargetCodeGenInfo which by default returns ConstantPointerNull and emitting addrspacecast instruction. A virtual member function getNullPointerValue is added to TargetInfo which by default returns 0. Each target can override these virtual functions to get target specific null pointer and the null pointer value for specific address space, and perform specific translations for addrspacecast.
Wrapper functions getNullPointer is added to CodegenModule and getTargetNullPointerValue is added to ASTContext to facilitate getting the target specific null pointers and their values.
This change has no effect on other targets except amdgcn target. Other targets can provide support of non-zero null pointer in a similar way.
This change only provides support for non-zero null pointer for C and OpenCL. Supporting for other languages will be added later incrementally.
Differential Revision: https://reviews.llvm.org/D26196
llvm-svn: 289252
show more ...
|
Revision tags: llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1, llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1 |
|
#
9670f847 |
| 18-Jul-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
[NFC] Header cleanup
Summary: Removed unused headers, replaced some headers with forward class declarations
Patch by: Eugene <claprix@yandex.ru>
Differential Revision: https://reviews.llvm.org/D20
[NFC] Header cleanup
Summary: Removed unused headers, replaced some headers with forward class declarations
Patch by: Eugene <claprix@yandex.ru>
Differential Revision: https://reviews.llvm.org/D20100
llvm-svn: 275882
show more ...
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1, llvmorg-3.8.0, llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2 |
|
#
cdae941e |
| 29-Jan-2016 |
Yaron Keren <yaron.keren@gmail.com> |
Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment.
llvm-svn: 259232
|
Revision tags: llvmorg-3.8.0-rc1, llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1, llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, studio-1.4, llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1, llvmorg-3.6.1, llvmorg-3.6.1-rc1, llvmorg-3.5.2, llvmorg-3.5.2-rc1, llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1, llvmorg-3.5.0, llvmorg-3.5.0-rc4 |
|
#
5fc8fc2d |
| 27-Aug-2014 |
Craig Topper <craig.topper@gmail.com> |
Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created.
llvm-svn: 216528
|
Revision tags: llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2, llvmorg-3.5.0-rc1 |
|
#
ddd01cec |
| 09-Jun-2014 |
Richard Trieu <rtrieu@google.com> |
Removing an "if (this == nullptr)" check from two print methods. The condition will never be true in a well-defined context. The checking for null pointers has been moved into the caller logic so i
Removing an "if (this == nullptr)" check from two print methods. The condition will never be true in a well-defined context. The checking for null pointers has been moved into the caller logic so it does not rely on undefined behavior.
llvm-svn: 210498
show more ...
|
Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1 |
|
#
36250ad6 |
| 12-May-2014 |
Craig Topper <craig.topper@gmail.com> |
[C++11] Use 'nullptr'. AST edition.
llvm-svn: 208517
|
Revision tags: llvmorg-3.4.1, llvmorg-3.4.1-rc2, llvmorg-3.4.1-rc1 |
|
#
a939c23a |
| 15-Mar-2014 |
Benjamin Kramer <benny.kra@googlemail.com> |
Make some assertions on constant expressions static.
llvm-svn: 204012
|
#
e8a8baef |
| 08-Mar-2014 |
Aaron Ballman <aaron@aaronballman.com> |
[C++11] Replacing RecordDecl iterators field_begin() and field_end() with iterator_range fields(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203355
|
#
7073a2da |
| 10-Jan-2014 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Reapply r198845, reverted in r198849, with a fix to make it valid C++98, not just valid C++11 =)
Original commit message:
PR18427: Use an appropriately-aligned buffer in APValue, to avoid a crash o
Reapply r198845, reverted in r198849, with a fix to make it valid C++98, not just valid C++11 =)
Original commit message:
PR18427: Use an appropriately-aligned buffer in APValue, to avoid a crash on SPARC, where uint64_t apparently requires higher alignment than void*.
llvm-svn: 198903
show more ...
|
#
62a85dae |
| 09-Jan-2014 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Revert "PR18427: Use an appropriately-aligned buffer in APValue, to avoid a crash on"
It broke building. This reverts commit r198845.
llvm-svn: 198849
|