[clang] Complex range (PR #70244)
https://github.com/zahiraam updated https://github.com/llvm/llvm-project/pull/70244 >From 340e3777509f70b5b300adcb181261e84247cf1a Mon Sep 17 00:00:00 2001 From: Ammarguellat Date: Mon, 23 Oct 2023 12:51:21 -0700 Subject: [PATCH 01/10] Revert "[clang] Support fixed point types in C++ (#67750)" This reverts commit a3a7d6318027bb86e6614c022e77e0bd81aef6dc. When compiling with MSVC2022 in C++32 mode this is giving an error. Compiling this simple test case: t1.cpp: with -std=c++23 will give the following error: In file included from C:\Users\zahiraam\t1.cpp:1: c:\Program files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.35.32215\include\vector:3329:16: error: compile with '-ffixed-point' to enable fixed point types 3329 | _Vbase _Accum = 0; |^ c:\Program files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.35.32215\include\vector:3329:23: error: expected unqualified-id 3329 | _Vbase _Accum = 0; | ^ Please full error in https://github.com/llvm/llvm-project/pull/67750#issuecomment-1775264907 --- clang/include/clang/Basic/TokenKinds.def | 6 +- clang/include/clang/Driver/Options.td| 2 +- clang/lib/AST/ItaniumMangle.cpp | 59 +--- clang/lib/Parse/ParseExpr.cpp| 3 - clang/lib/Parse/ParseExprCXX.cpp | 9 --- clang/lib/Parse/ParseTentative.cpp | 6 -- clang/test/CodeGenCXX/fixed-point-mangle.cpp | 45 --- clang/test/Frontend/fixed_point_errors.cpp | 24 8 files changed, 15 insertions(+), 139 deletions(-) delete mode 100644 clang/test/CodeGenCXX/fixed-point-mangle.cpp diff --git a/clang/include/clang/Basic/TokenKinds.def b/clang/include/clang/Basic/TokenKinds.def index bbae1200d376c0d..3ce317d318f9bb6 100644 --- a/clang/include/clang/Basic/TokenKinds.def +++ b/clang/include/clang/Basic/TokenKinds.def @@ -423,9 +423,9 @@ C23_KEYWORD(typeof , KEYGNU) C23_KEYWORD(typeof_unqual , 0) // ISO/IEC JTC1 SC22 WG14 N1169 Extension -KEYWORD(_Accum , KEYALL) -KEYWORD(_Fract , KEYALL) -KEYWORD(_Sat, KEYALL) +KEYWORD(_Accum , KEYNOCXX) +KEYWORD(_Fract , KEYNOCXX) +KEYWORD(_Sat, KEYNOCXX) // GNU Extensions (in impl-reserved namespace) KEYWORD(_Decimal32 , KEYALL) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index e63158fb0e5333a..ca883689b05c28a 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2097,7 +2097,7 @@ defm fixed_point : BoolFOption<"fixed-point", LangOpts<"FixedPoint">, DefaultFalse, PosFlag, NegFlag, - BothFlags<[], [ClangOption], " fixed point types">>; + BothFlags<[], [ClangOption], " fixed point types">>, ShouldParseIf; defm cxx_static_destructors : BoolFOption<"c++-static-destructors", LangOpts<"RegisterStaticDestructors">, DefaultTrue, NegFlag# vendor extended type - // - // - // ::= s # short - // ::= t # unsigned short - // ::= i # plain - // ::= j # unsigned - // ::= l # long - // ::= m # unsigned long std::string type_name; // Normalize integer types as vendor extended types: // ui @@ -3205,77 +3195,30 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { Out << "DF16_"; break; case BuiltinType::ShortAccum: -Out << "DAs"; -break; case BuiltinType::Accum: -Out << "DAi"; -break; case BuiltinType::LongAccum: -Out << "DAl"; -break; case BuiltinType::UShortAccum: -Out << "DAt"; -break; case BuiltinType::UAccum: -Out << "DAj"; -break; case BuiltinType::ULongAccum: -Out << "DAm"; -break; case BuiltinType::ShortFract: -Out << "DRs"; -break; case BuiltinType::Fract: -Out << "DRi"; -break; case BuiltinType::LongFract: -Out << "DRl"; -break; case BuiltinType::UShortFract: -Out << "DRt"; -break; case BuiltinType::UFract: -Out << "DRj"; -break; case BuiltinType::ULongFract: -Out << "DRm"; -break; case BuiltinType::SatShortAccum: -Out << "DSDAs"; -break; case BuiltinType::SatAccum: -Out << "DSDAi"; -break; case BuiltinType::SatLongAccum: -Out << "DSDAl"; -break; case BuiltinType::SatUShortAccum: -Out << "DSDAt"; -break; case BuiltinType::SatUAccum: -Out << "DSDAj"; -break; case BuiltinType::SatULongAccum: -Out << "DSDAm"; -break; case BuiltinType::SatShortFract: -Out << "DSDRs"; -break; case BuiltinType::SatFract: -Out << "DSDRi"; -break; case BuiltinType::SatLongFract: -Out << "DSDRl"; -break; case
[clang] Complex range (PR #70244)
https://github.com/zahiraam updated https://github.com/llvm/llvm-project/pull/70244 >From 340e3777509f70b5b300adcb181261e84247cf1a Mon Sep 17 00:00:00 2001 From: Ammarguellat Date: Mon, 23 Oct 2023 12:51:21 -0700 Subject: [PATCH 1/9] Revert "[clang] Support fixed point types in C++ (#67750)" This reverts commit a3a7d6318027bb86e6614c022e77e0bd81aef6dc. When compiling with MSVC2022 in C++32 mode this is giving an error. Compiling this simple test case: t1.cpp: with -std=c++23 will give the following error: In file included from C:\Users\zahiraam\t1.cpp:1: c:\Program files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.35.32215\include\vector:3329:16: error: compile with '-ffixed-point' to enable fixed point types 3329 | _Vbase _Accum = 0; |^ c:\Program files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.35.32215\include\vector:3329:23: error: expected unqualified-id 3329 | _Vbase _Accum = 0; | ^ Please full error in https://github.com/llvm/llvm-project/pull/67750#issuecomment-1775264907 --- clang/include/clang/Basic/TokenKinds.def | 6 +- clang/include/clang/Driver/Options.td| 2 +- clang/lib/AST/ItaniumMangle.cpp | 59 +--- clang/lib/Parse/ParseExpr.cpp| 3 - clang/lib/Parse/ParseExprCXX.cpp | 9 --- clang/lib/Parse/ParseTentative.cpp | 6 -- clang/test/CodeGenCXX/fixed-point-mangle.cpp | 45 --- clang/test/Frontend/fixed_point_errors.cpp | 24 8 files changed, 15 insertions(+), 139 deletions(-) delete mode 100644 clang/test/CodeGenCXX/fixed-point-mangle.cpp diff --git a/clang/include/clang/Basic/TokenKinds.def b/clang/include/clang/Basic/TokenKinds.def index bbae1200d376c0d..3ce317d318f9bb6 100644 --- a/clang/include/clang/Basic/TokenKinds.def +++ b/clang/include/clang/Basic/TokenKinds.def @@ -423,9 +423,9 @@ C23_KEYWORD(typeof , KEYGNU) C23_KEYWORD(typeof_unqual , 0) // ISO/IEC JTC1 SC22 WG14 N1169 Extension -KEYWORD(_Accum , KEYALL) -KEYWORD(_Fract , KEYALL) -KEYWORD(_Sat, KEYALL) +KEYWORD(_Accum , KEYNOCXX) +KEYWORD(_Fract , KEYNOCXX) +KEYWORD(_Sat, KEYNOCXX) // GNU Extensions (in impl-reserved namespace) KEYWORD(_Decimal32 , KEYALL) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index e63158fb0e5333a..ca883689b05c28a 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2097,7 +2097,7 @@ defm fixed_point : BoolFOption<"fixed-point", LangOpts<"FixedPoint">, DefaultFalse, PosFlag, NegFlag, - BothFlags<[], [ClangOption], " fixed point types">>; + BothFlags<[], [ClangOption], " fixed point types">>, ShouldParseIf; defm cxx_static_destructors : BoolFOption<"c++-static-destructors", LangOpts<"RegisterStaticDestructors">, DefaultTrue, NegFlag# vendor extended type - // - // - // ::= s # short - // ::= t # unsigned short - // ::= i # plain - // ::= j # unsigned - // ::= l # long - // ::= m # unsigned long std::string type_name; // Normalize integer types as vendor extended types: // ui @@ -3205,77 +3195,30 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { Out << "DF16_"; break; case BuiltinType::ShortAccum: -Out << "DAs"; -break; case BuiltinType::Accum: -Out << "DAi"; -break; case BuiltinType::LongAccum: -Out << "DAl"; -break; case BuiltinType::UShortAccum: -Out << "DAt"; -break; case BuiltinType::UAccum: -Out << "DAj"; -break; case BuiltinType::ULongAccum: -Out << "DAm"; -break; case BuiltinType::ShortFract: -Out << "DRs"; -break; case BuiltinType::Fract: -Out << "DRi"; -break; case BuiltinType::LongFract: -Out << "DRl"; -break; case BuiltinType::UShortFract: -Out << "DRt"; -break; case BuiltinType::UFract: -Out << "DRj"; -break; case BuiltinType::ULongFract: -Out << "DRm"; -break; case BuiltinType::SatShortAccum: -Out << "DSDAs"; -break; case BuiltinType::SatAccum: -Out << "DSDAi"; -break; case BuiltinType::SatLongAccum: -Out << "DSDAl"; -break; case BuiltinType::SatUShortAccum: -Out << "DSDAt"; -break; case BuiltinType::SatUAccum: -Out << "DSDAj"; -break; case BuiltinType::SatULongAccum: -Out << "DSDAm"; -break; case BuiltinType::SatShortFract: -Out << "DSDRs"; -break; case BuiltinType::SatFract: -Out << "DSDRi"; -break; case BuiltinType::SatLongFract: -Out << "DSDRl"; -break; case
[clang] Complex range (PR #70244)
https://github.com/zahiraam created https://github.com/llvm/llvm-project/pull/70244 None >From 340e3777509f70b5b300adcb181261e84247cf1a Mon Sep 17 00:00:00 2001 From: Ammarguellat Date: Mon, 23 Oct 2023 12:51:21 -0700 Subject: [PATCH 1/8] Revert "[clang] Support fixed point types in C++ (#67750)" This reverts commit a3a7d6318027bb86e6614c022e77e0bd81aef6dc. When compiling with MSVC2022 in C++32 mode this is giving an error. Compiling this simple test case: t1.cpp: with -std=c++23 will give the following error: In file included from C:\Users\zahiraam\t1.cpp:1: c:\Program files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.35.32215\include\vector:3329:16: error: compile with '-ffixed-point' to enable fixed point types 3329 | _Vbase _Accum = 0; |^ c:\Program files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.35.32215\include\vector:3329:23: error: expected unqualified-id 3329 | _Vbase _Accum = 0; | ^ Please full error in https://github.com/llvm/llvm-project/pull/67750#issuecomment-1775264907 --- clang/include/clang/Basic/TokenKinds.def | 6 +- clang/include/clang/Driver/Options.td| 2 +- clang/lib/AST/ItaniumMangle.cpp | 59 +--- clang/lib/Parse/ParseExpr.cpp| 3 - clang/lib/Parse/ParseExprCXX.cpp | 9 --- clang/lib/Parse/ParseTentative.cpp | 6 -- clang/test/CodeGenCXX/fixed-point-mangle.cpp | 45 --- clang/test/Frontend/fixed_point_errors.cpp | 24 8 files changed, 15 insertions(+), 139 deletions(-) delete mode 100644 clang/test/CodeGenCXX/fixed-point-mangle.cpp diff --git a/clang/include/clang/Basic/TokenKinds.def b/clang/include/clang/Basic/TokenKinds.def index bbae1200d376c0d..3ce317d318f9bb6 100644 --- a/clang/include/clang/Basic/TokenKinds.def +++ b/clang/include/clang/Basic/TokenKinds.def @@ -423,9 +423,9 @@ C23_KEYWORD(typeof , KEYGNU) C23_KEYWORD(typeof_unqual , 0) // ISO/IEC JTC1 SC22 WG14 N1169 Extension -KEYWORD(_Accum , KEYALL) -KEYWORD(_Fract , KEYALL) -KEYWORD(_Sat, KEYALL) +KEYWORD(_Accum , KEYNOCXX) +KEYWORD(_Fract , KEYNOCXX) +KEYWORD(_Sat, KEYNOCXX) // GNU Extensions (in impl-reserved namespace) KEYWORD(_Decimal32 , KEYALL) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index e63158fb0e5333a..ca883689b05c28a 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2097,7 +2097,7 @@ defm fixed_point : BoolFOption<"fixed-point", LangOpts<"FixedPoint">, DefaultFalse, PosFlag, NegFlag, - BothFlags<[], [ClangOption], " fixed point types">>; + BothFlags<[], [ClangOption], " fixed point types">>, ShouldParseIf; defm cxx_static_destructors : BoolFOption<"c++-static-destructors", LangOpts<"RegisterStaticDestructors">, DefaultTrue, NegFlag# vendor extended type - // - // - // ::= s # short - // ::= t # unsigned short - // ::= i # plain - // ::= j # unsigned - // ::= l # long - // ::= m # unsigned long std::string type_name; // Normalize integer types as vendor extended types: // ui @@ -3205,77 +3195,30 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { Out << "DF16_"; break; case BuiltinType::ShortAccum: -Out << "DAs"; -break; case BuiltinType::Accum: -Out << "DAi"; -break; case BuiltinType::LongAccum: -Out << "DAl"; -break; case BuiltinType::UShortAccum: -Out << "DAt"; -break; case BuiltinType::UAccum: -Out << "DAj"; -break; case BuiltinType::ULongAccum: -Out << "DAm"; -break; case BuiltinType::ShortFract: -Out << "DRs"; -break; case BuiltinType::Fract: -Out << "DRi"; -break; case BuiltinType::LongFract: -Out << "DRl"; -break; case BuiltinType::UShortFract: -Out << "DRt"; -break; case BuiltinType::UFract: -Out << "DRj"; -break; case BuiltinType::ULongFract: -Out << "DRm"; -break; case BuiltinType::SatShortAccum: -Out << "DSDAs"; -break; case BuiltinType::SatAccum: -Out << "DSDAi"; -break; case BuiltinType::SatLongAccum: -Out << "DSDAl"; -break; case BuiltinType::SatUShortAccum: -Out << "DSDAt"; -break; case BuiltinType::SatUAccum: -Out << "DSDAj"; -break; case BuiltinType::SatULongAccum: -Out << "DSDAm"; -break; case BuiltinType::SatShortFract: -Out << "DSDRs"; -break; case BuiltinType::SatFract: -Out << "DSDRi"; -break; case BuiltinType::SatLongFract: -Out << "DSDRl"; -break; case