#
f0a955d3 |
| 17-Jul-2023 |
Yaxun (Sam) Liu <yaxun.liu@amd.com> |
[HIP] Rename predefined macros
Rename HIP_API_PER_THREAD_DEFAULT_STREAM and __HIP_NO_IMAGE_SUPPORT so that they follow the convention with prefix and postfix __.
Reviewed by: Artem Belevich
Differ
[HIP] Rename predefined macros
Rename HIP_API_PER_THREAD_DEFAULT_STREAM and __HIP_NO_IMAGE_SUPPORT so that they follow the convention with prefix and postfix __.
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D155480
show more ...
|
#
f05b58a9 |
| 12-Jul-2023 |
boxu.zhang <boxu.zhang@hotmail.com> |
[clang] Support '-fgpu-default-stream=per-thread' for NVIDIA CUDA
I'm using clang to compile CUDA code. And just found that clang doesn't support the per-thread stream option for NV CUDA. I don't kn
[clang] Support '-fgpu-default-stream=per-thread' for NVIDIA CUDA
I'm using clang to compile CUDA code. And just found that clang doesn't support the per-thread stream option for NV CUDA. I don't know if there is another solution.
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D154822
show more ...
|
#
63ca93c7 |
| 06-Jul-2023 |
Sergio Afonso <safonsof@amd.com> |
[OpenMP][OMPIRBuilder] Rename IsEmbedded and IsTargetCodegen flags
This patch renames the `OpenMPIRBuilderConfig` flags to reduce confusion over their meaning. `IsTargetCodegen` becomes `IsGPU`, whe
[OpenMP][OMPIRBuilder] Rename IsEmbedded and IsTargetCodegen flags
This patch renames the `OpenMPIRBuilderConfig` flags to reduce confusion over their meaning. `IsTargetCodegen` becomes `IsGPU`, whereas `IsEmbedded` becomes `IsTargetDevice`. The `-fopenmp-is-device` compiler option is also renamed to `-fopenmp-is-target-device` and the `omp.is_device` MLIR attribute is renamed to `omp.is_target_device`. Getters and setters of all these renamed properties are also updated accordingly. Many unit tests have been updated to use the new names, but an alias for the `-fopenmp-is-device` option is created so that external programs do not stop working after the name change.
`IsGPU` is set when the target triple is AMDGCN or NVIDIA PTX, and it is only valid if `IsTargetDevice` is specified as well. `IsTargetDevice` is set by the `-fopenmp-is-target-device` compiler frontend option, which is only added to the OpenMP device invocation for offloading-enabled programs.
Differential Revision: https://reviews.llvm.org/D154591
show more ...
|
Revision tags: llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1 |
|
#
f27afedc |
| 10-Sep-2022 |
Corentin Jabot <corentinjabot@gmail.com> |
[Clang] Implement P2738R1 - constexpr cast from void*
Reviewed By: #clang-language-wg, erichkeane
Differential Revision: https://reviews.llvm.org/D153702
|
#
7dd387d2 |
| 18-Jun-2023 |
Serge Pavlov <sepavloff@gmail.com> |
[clang] Add __builtin_isfpclass
A new builtin function __builtin_isfpclass is added. It is called as:
__builtin_isfpclass(<floating point value>, <test>)
and returns an integer value, which is
[clang] Add __builtin_isfpclass
A new builtin function __builtin_isfpclass is added. It is called as:
__builtin_isfpclass(<floating point value>, <test>)
and returns an integer value, which is non-zero if the floating point argument falls into one of the classes specified by the second argument, and zero otherwise. The set of classes is an integer value, where each value class is represented by a bit. There are ten data classes, as defined by the IEEE-754 standard, they are represented by bits:
0x0001 (__FPCLASS_SNAN) - Signaling NaN 0x0002 (__FPCLASS_QNAN) - Quiet NaN 0x0004 (__FPCLASS_NEGINF) - Negative infinity 0x0008 (__FPCLASS_NEGNORMAL) - Negative normal 0x0010 (__FPCLASS_NEGSUBNORMAL) - Negative subnormal 0x0020 (__FPCLASS_NEGZERO) - Negative zero 0x0040 (__FPCLASS_POSZERO) - Positive zero 0x0080 (__FPCLASS_POSSUBNORMAL) - Positive subnormal 0x0100 (__FPCLASS_POSNORMAL) - Positive normal 0x0200 (__FPCLASS_POSINF) - Positive infinity
They have corresponding builtin macros to facilitate using the builtin function:
if (__builtin_isfpclass(x, __FPCLASS_NEGZERO | __FPCLASS_POSZERO) { // x is any zero. }
The data class encoding is identical to that used in llvm.is.fpclass function.
Differential Revision: https://reviews.llvm.org/D152351
show more ...
|
#
0c6f2f62 |
| 06-Jun-2023 |
Animesh Kumar <animesh.kumar@amd.com> |
[OpenMP] Update the default version of OpenMP to 5.1
The default version of OpenMP is updated from 5.0 to 5.1 which means if -fopenmp is specified but -fopenmp-version is not specified with clang, t
[OpenMP] Update the default version of OpenMP to 5.1
The default version of OpenMP is updated from 5.0 to 5.1 which means if -fopenmp is specified but -fopenmp-version is not specified with clang, the default version of OpenMP is taken to be 5.1. After modifying the Frontend for that, various LIT tests were updated. This patch contains all such changes. At a high level, these are the patterns of changes observed in LIT tests -
# RUN lines which mentioned `-fopenmp-version=50` need to kept only if the IR for version 5.0 and 5.1 are different. Otherwise only one RUN line with no version info(i.e. default version) needs to be there.
# Test cases of this sort already had the RUN lines with respect to the older default version 5.0 and the version 5.1. Only swapping the version specification flag `-fopenmp-version` from newer version RUN line to older version RUN line is required.
# Diagnostics: Remove the 5.0 version specific RUN lines if there was no difference in the Diagnostics messages with respect to the default 5.1.
# Diagnostics: In case there was any difference in diagnostics messages between 5.0 and 5.1, mention version specific messages in tests.
# If the test contained version specific ifdef's e.g. "#ifdef OMP5" but there were no RUN lines for any other version than 5.X, then bring the code guarded by ifdef's outside and remove the ifdef's.
# Some tests had RUN lines for both 5.0 and 5.1 versions, but it is found that the IR for 5.0 is not different from the 5.1, therefore such RUN lines are redundant. So, such duplicated lines are removed.
# To generate CHECK lines automatically, use the script llvm/utils/update_cc_test_checks.py
Reviewed By: saiislam, ABataev
Differential Revision: https://reviews.llvm.org/D129635
(cherry picked from commit 9dd2999907dc791136a75238a6000f69bf67cf4e)
show more ...
|
#
c0f0d506 |
| 24-May-2023 |
Yaxun (Sam) Liu <yaxun.liu@amd.com> |
[HIP] emit macro `__HIP_NO_IMAGE_SUPPORT`
HIP texture/image support is optional as some devices do not have image instructions. A macro __HIP_NO_IMAGE_SUPPORT is defined for device not supporting im
[HIP] emit macro `__HIP_NO_IMAGE_SUPPORT`
HIP texture/image support is optional as some devices do not have image instructions. A macro __HIP_NO_IMAGE_SUPPORT is defined for device not supporting images (https://github.com/ROCm-Developer-Tools/HIP/blob/d0448aa4c4dd0f4b29ccf6a663b7f5ad9f5183e0/docs/reference/kernel_language.md?plain=1#L426 )
Currently the macro is defined by HIP header based on predefined macros for GPU, e.g __gfx*__ , which is error prone. This patch let clang emit the predefined macro.
Reviewed by: Matt Arsenault, Artem Belevich
Differential Revision: https://reviews.llvm.org/D151349
show more ...
|
#
bba6ea8c |
| 13-Jun-2023 |
Mariya Podchishchaeva <mariya.podchishchaeva@intel.com> |
[C++20] Claim full support for consteval again
After resolving several outstanding issues now is the time to mark it as fully supported.
Fixes https://github.com/llvm/llvm-project/issues/57094
Rev
[C++20] Claim full support for consteval again
After resolving several outstanding issues now is the time to mark it as fully supported.
Fixes https://github.com/llvm/llvm-project/issues/57094
Reviewed By: aaron.ballman, cor3ntin, #clang-language-wg
Differential Revision: https://reviews.llvm.org/D147717
show more ...
|
#
46768852 |
| 08-May-2023 |
Corentin Jabot <corentinjabot@gmail.com> |
[clang] Implement P2564 "consteval must propagate up"
Reviewed By: aaron.ballman, #clang-language-wg
Differential Revision: https://reviews.llvm.org/D151094
|
#
78bf8a0a |
| 17-May-2023 |
John Brawn <john.brawn@arm.com> |
[clang] Don't define predefined macros multiple times
Fix several instances of macros being defined multiple times in several targets. Most of these are just simple duplication in a TargetInfo or OS
[clang] Don't define predefined macros multiple times
Fix several instances of macros being defined multiple times in several targets. Most of these are just simple duplication in a TargetInfo or OSTargetInfo of things already defined in InitializePredefinedMacros or InitializeStandardPredefinedMacros, but there are a few that aren't: * AArch64 defines a couple of feature macros for armv8.1a that are handled generically by getTargetDefines. * CSKY needs to take care when CPUName and ArchName are the same. * Many os/target combinations result in __ELF__ being defined twice. Instead define __ELF__ just once in InitPreprocessor based on the Triple, which already knows what the object format is based on os and target.
These changes shouldn't change the final result of which macros are defined, with the exception of the changes to __ELF__ where if you explicitly specify the object type in the triple then this affects if __ELF__ is defined, e.g. --target=i686-windows-elf results in it being defined where it wasn't before, but this is more accurate as an ELF file is in fact generated.
Differential Revision: https://reviews.llvm.org/D150966
show more ...
|
#
b763d6a4 |
| 12-May-2023 |
Erich Keane <erich.keane@intel.com> |
Add C++26 compile flags.
Now that we've updated to C++23, we need to add C++26/C++2c command line flags, as discussed in https://discourse.llvm.org/t/rfc-lets-just-call-it-c-26-and-forget-about-the-
Add C++26 compile flags.
Now that we've updated to C++23, we need to add C++26/C++2c command line flags, as discussed in https://discourse.llvm.org/t/rfc-lets-just-call-it-c-26-and-forget-about-the-c-2c-business-at-least-internally/70383
Differential Revision: https://reviews.llvm.org/D150450
show more ...
|
#
ba9eaf59 |
| 15-May-2023 |
Erich Keane <erich.keane@intel.com> |
Update __cplusplus for C++23, add C++23 diag group alias.
This came up during the C++26 flag discussion, so split this out into a separate patch.
|
#
ba15d186 |
| 30-Apr-2023 |
Mark de Wever <koraq@xs4all.nl> |
[clang] Use -std=c++23 instead of -std=c++2b
During the ISO C++ Committee meeting plenary session the C++23 Standard has been voted as technical complete.
This updates the reference to c++2b to c++
[clang] Use -std=c++23 instead of -std=c++2b
During the ISO C++ Committee meeting plenary session the C++23 Standard has been voted as technical complete.
This updates the reference to c++2b to c++23 and updates the __cplusplus macro.
Drive-by fixes c++1z -> c++17 and c++2a -> c++20 when seen.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D149553
show more ...
|
#
0818433a |
| 17-Mar-2023 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
Remove the outdated feature macro '__cpp_coroutines'
The feature macro '__cpp_coroutines' is for coroutines TS. And the coroutines TS is deprecated. So we should remove the feature macro too.
BTW,
Remove the outdated feature macro '__cpp_coroutines'
The feature macro '__cpp_coroutines' is for coroutines TS. And the coroutines TS is deprecated. So we should remove the feature macro too.
BTW, the corresponding feature macro for standard c++ coroutines is '__cpp_impl_coroutine'.
show more ...
|
#
128f7dac |
| 01-Mar-2023 |
John Brawn <john.brawn@arm.com> |
[Lex] Use line markers in preprocessed assembly predefines file
GNU line marker directives are not recognised when preprocessing assembly files, meaning they can't be used in the predefines file mea
[Lex] Use line markers in preprocessed assembly predefines file
GNU line marker directives are not recognised when preprocessing assembly files, meaning they can't be used in the predefines file meaning macros defined on the command line are reported as being built-in.
Change this to permit line markers but only in the predefines file, so we can correctly report command line macros as coming from the command line.
Differential Revision: https://reviews.llvm.org/D145397
show more ...
|
#
95a4c0c8 |
| 04-Jan-2023 |
Alan Zhao <ayzhao@google.com> |
[clang] Reland parenthesized aggregate init patches
This commit relands the patches for implementing P0960R3 and P1975R0, which describe initializing aggregates via a parenthesized list.
The reland
[clang] Reland parenthesized aggregate init patches
This commit relands the patches for implementing P0960R3 and P1975R0, which describe initializing aggregates via a parenthesized list.
The relanded commits are:
* 40c52159d3ee - P0960R3 and P1975R0: Allow initializing aggregates from a parenthesized list of values * c77a91bb7ba7 - Remove overly restrictive aggregate paren init logic * 32d7aae04fdb - Fix a clang crash on invalid code in C++20 mode
This patch also fixes a crash in the original implementation. Previously, if the input tried to call an implicitly deleted copy or move constructor of a union, we would then try to initialize the union by initializing it's first element with a reference to a union. This behavior is incorrect (we should fail to initialize) and if the type of the first element has a constructor with a single template typename parameter, then Clang will explode. This patch fixes that issue by checking that constructor overload resolution did not result in a deleted function before attempting parenthesized aggregate initialization.
Additionally, this patch also includes D140159, which contains some minor fixes made in response to code review comments in the original implementation that were made after that patch was submitted.
Co-authored-by: Sheng <ox59616e@gmail.com>
Fixes #54040, Fixes #59675
Reviewed By: ilya-biryukov
Differential Revision: https://reviews.llvm.org/D141546
show more ...
|
#
4e02ff23 |
| 04-Jan-2023 |
Alan Zhao <ayzhao@google.com> |
[clang] Revert parentesized aggregate initalization patches
This feature causes clang to crash when compiling Chrome - see https://crbug.com/1405031 and https://github.com/llvm/llvm-project/issues/5
[clang] Revert parentesized aggregate initalization patches
This feature causes clang to crash when compiling Chrome - see https://crbug.com/1405031 and https://github.com/llvm/llvm-project/issues/59675
Revert "[clang] Fix a clang crash on invalid code in C++20 mode."
This reverts commit 32d7aae04fdb58e65a952f281ff2f2c3f396d98f.
Revert "[clang] Remove overly restrictive aggregate paren init logic"
This reverts commit c77a91bb7ba793ec3a6a5da3743ed55056291658.
Revert "[clang][C++20] P0960R3 and P1975R0: Allow initializing aggregates from a parenthesized list of values"
This reverts commit 40c52159d3ee337dbed14e4c73b5616ea354c337.
show more ...
|
#
40c52159 |
| 03-Oct-2022 |
Alan Zhao <ayzhao@google.com> |
[clang][C++20] P0960R3 and P1975R0: Allow initializing aggregates from a parenthesized list of values
This patch implements P0960R3, which allows initialization of aggregates via parentheses.
As an
[clang][C++20] P0960R3 and P1975R0: Allow initializing aggregates from a parenthesized list of values
This patch implements P0960R3, which allows initialization of aggregates via parentheses.
As an example:
``` struct S { int i, j; }; S s1(1, 1);
int arr1[2](1, 2); ```
This patch also implements P1975R0, which fixes the wording of P0960R3 for single-argument parenthesized lists so that statements like the following are allowed:
``` S s2(1); S s3 = static_cast<S>(1); S s4 = (S)1;
int (&&arr2)[] = static_cast<int[]>(1); int (&&arr3)[2] = static_cast<int[2]>(1); ```
This patch was originally authored by @0x59616e and completed by @ayzhao.
Fixes #54040, Fixes #54041
Co-authored-by: Sheng <ox59616e@gmail.com>
Full write up : https://discourse.llvm.org/t/c-20-rfc-suggestion-desired-regarding-the-implementation-of-p0960r3/63744
Reviewed By: ilya-biryukov
Differential Revision: https://reviews.llvm.org/D129531
show more ...
|
#
a602f76a |
| 18-Nov-2022 |
Alex Richardson <alexrichardson@google.com> |
[clang][TargetInfo] Use LangAS for getPointer{Width,Align}()
Mixing LLVM and Clang address spaces can result in subtle bugs, and there is no need for this hook to use the LLVM IR level address space
[clang][TargetInfo] Use LangAS for getPointer{Width,Align}()
Mixing LLVM and Clang address spaces can result in subtle bugs, and there is no need for this hook to use the LLVM IR level address spaces. Most of this change is just replacing zero with LangAS::Default, but it also allows us to remove a few calls to getTargetAddressSpace().
This also removes a stale comment+workaround in CGDebugInfo::CreatePointerLikeType(): ASTContext::getTypeSize() does return the expected size for ReferenceType (and handles address spaces).
Differential Revision: https://reviews.llvm.org/D138295
show more ...
|
#
3faf1f17 |
| 20-Nov-2022 |
Roy Jacobson <roi.jacobson1@gmail.com> |
[Clang] Implement static operator[]
After accepted in Kona, update the code to accept static operator[] as well.
No big code changes: accept this operator as static in SemaDeclCXX, update AST call
[Clang] Implement static operator[]
After accepted in Kona, update the code to accept static operator[] as well.
No big code changes: accept this operator as static in SemaDeclCXX, update AST call generation in SemaOverload and update feature macros + tests accordingly.
Reviewed By: cor3ntin, erichkeane, #clang-language-wg
Differential Revision: https://reviews.llvm.org/D138387
show more ...
|
#
5607fc00 |
| 28-Nov-2022 |
Corentin Jabot <corentinjabot@gmail.com> |
[Clang] Permit static constexpr variables in constexpr functions
This implement the C++23 paper P2647R1 (adopted in Kona)
Reviewed By: #clang-language-wg, erichkeane
Differential Revision: https:/
[Clang] Permit static constexpr variables in constexpr functions
This implement the C++23 paper P2647R1 (adopted in Kona)
Reviewed By: #clang-language-wg, erichkeane
Differential Revision: https://reviews.llvm.org/D138851
show more ...
|
#
00b1f7a6 |
| 15-Nov-2022 |
Alex Richardson <alexrichardson@google.com> |
Use TI.hasBuiltinAtomic() when setting ATOMIC_*_LOCK_FREE values. NFCI
I noticed that the values for __{CLANG,GCC}_ATOMIC_POINTER_LOCK_FREE were incorrectly set to 1 instead of two in downstream CHE
Use TI.hasBuiltinAtomic() when setting ATOMIC_*_LOCK_FREE values. NFCI
I noticed that the values for __{CLANG,GCC}_ATOMIC_POINTER_LOCK_FREE were incorrectly set to 1 instead of two in downstream CHERI targets because pointers are handled specially there. While fixing this downstream, I noticed that the existing code could be refactored to use TargetInfo::hasBuiltinAtomic instead of repeating the almost identical logic. In theory there could be a difference here since hasBuiltinAtomic() also returns true for types less than 1 char in size, but since InitializePredefinedMacros() never passes such a value this change should not introduce any functional changes.
Reviewed By: rprichard, efriedma
Differential Revision: https://reviews.llvm.org/D135142
show more ...
|
#
0e40a783 |
| 29-Oct-2022 |
YingChi Long <me@inclyc.cn> |
[clang][NFC] sync comments from declaration of InitializePreprocessor
|
#
d0d27723 |
| 21-Oct-2022 |
Corentin Jabot <corentinjabot@gmail.com> |
[Clang] Implement P2513
Implement P2513
This change allows initializing an array of unsigned char, or char from u8 string literals. This was done both to support legacy code and for compatibility w
[Clang] Implement P2513
Implement P2513
This change allows initializing an array of unsigned char, or char from u8 string literals. This was done both to support legacy code and for compatibility with C where char8_t will be typedef to unsigned char.
This is backported to C++20 as per WG21 guidance.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D136449
show more ...
|
#
19a0a567 |
| 12-Oct-2022 |
Chris Bieneman <chris.bieneman@me.com> |
[HLSL] Add utility to convert environment to stage
We had a bunch of places in the code where we were translating triple environment enum cases to shader stage enum cases. The order of these enums n
[HLSL] Add utility to convert environment to stage
We had a bunch of places in the code where we were translating triple environment enum cases to shader stage enum cases. The order of these enums needs to be kept in sync for the translation to be simple, but we were not properly handling out-of-bounds cases.
In normal compilation out-of-bounds cases shouldn't be possible because the driver errors if you don't have a valid shader environment set, but in clang tooling that error doesn't get treated as fatal and parsing continues. This can result in crashes in clang tooling for out-of-range shader stages.
To address this, this patch adds a constexpr method to handle the conversion which handles out-of-range values by converting them to `Invalid`.
Since this new method is a constexpr, the tests for this are a group of static_asserts in the implementation file that verifies the correct conversion for each valid enum case and validates that other cases are converted to `Invalid`.
Reviewed By: bogner
Differential Revision: https://reviews.llvm.org/D135595
show more ...
|