[clang] 4b5baa5 - Handle 128-bits IntegerLiterals in StmtPrinter
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 25 14:27:52 PDT 2021
Author: David Stone
Date: 2021-03-25T17:27:13-04:00
New Revision: 4b5baa5b8244778b0e7253cdb98924c3dab611b7
URL: https://github.com/llvm/llvm-project/commit/4b5baa5b8244778b0e7253cdb98924c3dab611b7
DIFF: https://github.com/llvm/llvm-project/commit/4b5baa5b8244778b0e7253cdb98924c3dab611b7.diff
LOG: Handle 128-bits IntegerLiterals in StmtPrinter
This fixes PR35677: "int128_t or uint128_t as non-type template
parameter causes crash when considering invalid constructor".
Added:
clang/test/AST/ast-print-int128.cpp
Modified:
clang/lib/AST/StmtPrinter.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp
index 9acfeda4e76c..ca35c6dccbf8 100644
--- a/clang/lib/AST/StmtPrinter.cpp
+++ b/clang/lib/AST/StmtPrinter.cpp
@@ -1170,6 +1170,10 @@ void StmtPrinter::VisitIntegerLiteral(IntegerLiteral *Node) {
case BuiltinType::ULong: OS << "UL"; break;
case BuiltinType::LongLong: OS << "LL"; break;
case BuiltinType::ULongLong: OS << "ULL"; break;
+ case BuiltinType::Int128:
+ break; // no suffix.
+ case BuiltinType::UInt128:
+ break; // no suffix.
}
}
diff --git a/clang/test/AST/ast-print-int128.cpp b/clang/test/AST/ast-print-int128.cpp
new file mode 100644
index 000000000000..01a130ceaa32
--- /dev/null
+++ b/clang/test/AST/ast-print-int128.cpp
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -ast-print -std=c++20 %s -o - | FileCheck %s
+
+template <bool>
+struct enable_if {
+};
+
+template <__uint128_t x, typename = typename enable_if<x != 0>::type>
+void f();
+
+template <__int128_t>
+void f();
+
+using T = decltype(f<0>());
+
+// CHECK: using T = decltype(f<0>());
More information about the cfe-commits
mailing list