[NFC] Fix builds on recent GCC with C++20 enabled
authorAlexander Batashev <alexbatashev@gmail.com>
Tue, 18 Jul 2023 16:43:36 +0000 (19:43 +0300)
committerAlexander Batashev <alexbatashev@outlook.com>
Tue, 18 Jul 2023 16:44:06 +0000 (19:44 +0300)
The following pattern fails on recent GCC versions with -std=c++20 flag passed
and succeeds with -std=c++17. Such behavior is not observed on Clang 16.0.

```c++
template <typename T>
struct Foo {
    Foo<T>(int a) {}
};
```

This patch removes template parameter from constructor in two occurences to
make the following command complete successfully:
bazel build -c fastbuild --cxxopt=-std=c++20 --host_cxxopt=-std=c++20 @llvm-project//llvm/...

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D154782

llvm/include/llvm/CodeGen/ByteProvider.h
llvm/lib/Transforms/IPO/AttributorAttributes.cpp

index e0ba40b..3187b4e 100644 (file)
@@ -29,8 +29,7 @@ namespace llvm {
 /// are used to extract Bytes.
 template <typename ISelOp> class ByteProvider {
 private:
-  ByteProvider<ISelOp>(std::optional<ISelOp> Src, int64_t DestOffset,
-                       int64_t SrcOffset)
+  ByteProvider(std::optional<ISelOp> Src, int64_t DestOffset, int64_t SrcOffset)
       : Src(Src), DestOffset(DestOffset), SrcOffset(SrcOffset) {}
 
   // TODO -- use constraint in c++20
index 89f39f8..0bfcb8c 100644 (file)
@@ -3472,8 +3472,7 @@ template <typename BaseTy, typename ToTy>
 struct CachedReachabilityAA : public BaseTy {
   using RQITy = ReachabilityQueryInfo<ToTy>;
 
-  CachedReachabilityAA<BaseTy, ToTy>(const IRPosition &IRP, Attributor &A)
-      : BaseTy(IRP, A) {}
+  CachedReachabilityAA(const IRPosition &IRP, Attributor &A) : BaseTy(IRP, A) {}
 
   /// See AbstractAttribute::isQueryAA.
   bool isQueryAA() const override { return true; }