Skip to content

Commit 917b0b5

Browse files
authored
Merge branch 'main' into ankurahir/clang-frontend-crash
2 parents d3c1e77 + e6c2fdc commit 917b0b5

File tree

166 files changed

+5143
-2940
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+5143
-2940
lines changed

clang/bindings/python/tests/cindex/test_diagnostics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def test_diagnostic_category(self):
7979
self.assertEqual(d.location.line, 1)
8080
self.assertEqual(d.location.column, 11)
8181

82-
self.assertEqual(d.category_number, 2)
82+
self.assertEqual(d.category_number, 3)
8383
self.assertEqual(d.category_name, "Semantic Issue")
8484

8585
def test_diagnostic_option(self):
@@ -123,7 +123,7 @@ def test_diagnostic_string_format(self):
123123
self.assertEqual(str(d), "t.c:1:26: error: expected ';' after struct")
124124
self.assertEqual(
125125
d.format(0b111111),
126-
"t.c:1:26: error: expected ';' after struct [3, Parse Issue]",
126+
"t.c:1:26: error: expected ';' after struct [2, Parse Issue]",
127127
)
128128
with self.assertRaises(ValueError):
129129
d.format(0b1000000)

clang/docs/ReleaseNotes.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ C23 Feature Support
159159
which clarified that a compound literal used within a function prototype is
160160
treated as if the compound literal were within the body rather than at file
161161
scope.
162+
- Fixed a bug where you could not cast a null pointer constant to type
163+
``nullptr_t``. Fixes #GH133644.
162164

163165
Non-comprehensive list of changes in this release
164166
-------------------------------------------------
@@ -311,6 +313,8 @@ Improvements to Clang's diagnostics
311313
312314
Fixes #GH61635
313315

316+
- Split diagnosing base class qualifiers from the ``-Wignored-Qualifiers`` diagnostic group into a new ``-Wignored-base-class-qualifiers`` diagnostic group (which is grouped under ``-Wignored-qualifiers``). Fixes #GH131935.
317+
314318
Improvements to Clang's time-trace
315319
----------------------------------
316320

@@ -337,6 +341,9 @@ Bug Fixes in This Version
337341
- Fixed a problematic case with recursive deserialization within ``FinishedDeserializing()`` where
338342
``PassInterestingDeclsToConsumer()`` was called before the declarations were safe to be passed. (#GH129982)
339343
- Fixed a modules crash where an explicit Constructor was deserialized. (#GH132794)
344+
- Defining an integer literal suffix (e.g., ``LL``) before including
345+
``<stdint.h>`` in a freestanding build no longer causes invalid token pasting
346+
when using the ``INTn_C`` macros. (#GH85995)
340347

341348
Bug Fixes to Compiler Builtins
342349
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clang/include/clang/Basic/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ macro(clang_diag_gen component)
88
-gen-clang-diags-enums -clang-component=${component}
99
SOURCE Diagnostic.td
1010
TARGET ClangDiagnostic${component}Enums)
11+
12+
clang_tablegen(Diagnostic${component}CompatIDs.inc
13+
-gen-clang-diags-compat-ids -clang-component=${component}
14+
SOURCE Diagnostic.td
15+
TARGET ClangDiagnostic${component}CompatIDs)
1116
endmacro(clang_diag_gen)
1217

1318
clang_diag_gen(Analysis)
@@ -31,6 +36,11 @@ clang_tablegen(DiagnosticIndexName.inc -gen-clang-diags-index-name
3136
SOURCE Diagnostic.td
3237
TARGET ClangDiagnosticIndexName)
3338

39+
clang_tablegen(DiagnosticAllCompatIDs.inc
40+
-gen-clang-diags-compat-ids
41+
SOURCE Diagnostic.td
42+
TARGET ClangDiagnosticAllCompatIDs)
43+
3444
clang_tablegen(AttrList.inc -gen-clang-attr-list
3545
-I ${CMAKE_CURRENT_SOURCE_DIR}/../../
3646
SOURCE Attr.td

clang/include/clang/Basic/Diagnostic.td

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,19 @@ class DefaultWarnNoWerror {
155155
}
156156
class DefaultRemark { Severity DefaultSeverity = SEV_Remark; }
157157

158+
class CompatWarningId<string name, int std, string diag, string diag_pre> {
159+
string Component = ?;
160+
string Name = name;
161+
string Diag = diag;
162+
string DiagPre = diag_pre;
163+
int Std = std;
164+
165+
// This is unused, but Tablegen will complain if it's missing because we define
166+
// the compatibility ids in the same place as the other diagnostics (which means
167+
// that we'll be inside a 'let CategoryName = "" in { ... }' block).
168+
string CategoryName = ?;
169+
}
170+
158171
// C++ compatibility warnings.
159172
multiclass CXXCompat<
160173
string message,
@@ -178,6 +191,11 @@ multiclass CXXCompat<
178191
"CXX98Compat",
179192
"CXXPre"#std_ver#"Compat"))>,
180193
DefaultIgnore;
194+
195+
def : CompatWarningId<
196+
NAME, std_ver,
197+
"compat_cxx"#std_ver#"_"#NAME,
198+
"compat_pre_cxx"#std_ver#"_"#NAME>;
181199
}
182200

183201
// These generate pairs of C++ compatibility warnings of the form:

clang/include/clang/Basic/DiagnosticAST.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ enum {
3636
#undef DIAG_ENUM_ITEM
3737
#undef DIAG_ENUM
3838
} // end namespace diag
39+
40+
namespace diag_compat {
41+
#define DIAG_COMPAT_IDS_BEGIN() enum {
42+
#define DIAG_COMPAT_IDS_END() \
43+
} \
44+
;
45+
#define DIAG_COMPAT_ID(IDX, NAME, ...) NAME = IDX,
46+
#include "clang/Basic/DiagnosticASTCompatIDs.inc"
47+
#undef DIAG_COMPAT_ID
48+
#undef DIAG_COMPAT_IDS_BEGIN
49+
#undef DIAG_COMPAT_IDS_END
50+
} // end namespace diag_compat
3951
} // end namespace clang
4052

4153
#endif // LLVM_CLANG_BASIC_DIAGNOSTICAST_H

clang/include/clang/Basic/DiagnosticAnalysis.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ enum {
3535
#undef DIAG_ENUM_ITEM
3636
#undef DIAG_ENUM
3737
} // end namespace diag
38+
39+
namespace diag_compat {
40+
#define DIAG_COMPAT_IDS_BEGIN() enum {
41+
#define DIAG_COMPAT_IDS_END() \
42+
} \
43+
;
44+
#define DIAG_COMPAT_ID(IDX, NAME, ...) NAME = IDX,
45+
#include "clang/Basic/DiagnosticAnalysisCompatIDs.inc"
46+
#undef DIAG_COMPAT_ID
47+
#undef DIAG_COMPAT_IDS_BEGIN
48+
#undef DIAG_COMPAT_IDS_END
49+
} // end namespace diag_compat
3850
} // end namespace clang
3951

4052
#endif // LLVM_CLANG_BASIC_DIAGNOSTICANALYSIS_H

clang/include/clang/Basic/DiagnosticComment.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ enum {
3636
#undef DIAG_ENUM_ITEM
3737
#undef DIAG_ENUM
3838
} // end namespace diag
39+
40+
namespace diag_compat {
41+
#define DIAG_COMPAT_IDS_BEGIN() enum {
42+
#define DIAG_COMPAT_IDS_END() \
43+
} \
44+
;
45+
#define DIAG_COMPAT_ID(IDX, NAME, ...) NAME = IDX,
46+
#include "clang/Basic/DiagnosticCommentCompatIDs.inc"
47+
#undef DIAG_COMPAT_ID
48+
#undef DIAG_COMPAT_IDS_BEGIN
49+
#undef DIAG_COMPAT_IDS_END
50+
} // end namespace diag_compat
3951
} // end namespace clang
4052

4153
#endif // LLVM_CLANG_BASIC_DIAGNOSTICCOMMENT_H

clang/include/clang/Basic/DiagnosticCrossTU.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ enum {
3636
#undef DIAG_ENUM_ITEM
3737
#undef DIAG_ENUM
3838
} // end namespace diag
39+
40+
namespace diag_compat {
41+
#define DIAG_COMPAT_IDS_BEGIN() enum {
42+
#define DIAG_COMPAT_IDS_END() \
43+
} \
44+
;
45+
#define DIAG_COMPAT_ID(IDX, NAME, ...) NAME = IDX,
46+
#include "clang/Basic/DiagnosticCrossTUCompatIDs.inc"
47+
#undef DIAG_COMPAT_ID
48+
#undef DIAG_COMPAT_IDS_BEGIN
49+
#undef DIAG_COMPAT_IDS_END
50+
} // end namespace diag_compat
3951
} // end namespace clang
4052

4153
#endif // LLVM_CLANG_BASIC_DIAGNOSTICCROSSTU_H

clang/include/clang/Basic/DiagnosticDriver.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ enum {
3636
#undef DIAG_ENUM_ITEM
3737
#undef DIAG_ENUM
3838
} // end namespace diag
39+
40+
namespace diag_compat {
41+
#define DIAG_COMPAT_IDS_BEGIN() enum {
42+
#define DIAG_COMPAT_IDS_END() \
43+
} \
44+
;
45+
#define DIAG_COMPAT_ID(IDX, NAME, ...) NAME = IDX,
46+
#include "clang/Basic/DiagnosticDriverCompatIDs.inc"
47+
#undef DIAG_COMPAT_ID
48+
#undef DIAG_COMPAT_IDS_BEGIN
49+
#undef DIAG_COMPAT_IDS_END
50+
} // end namespace diag_compat
3951
} // end namespace clang
4052

4153
#endif // LLVM_CLANG_BASIC_DIAGNOSTICDRIVER_H

clang/include/clang/Basic/DiagnosticFrontend.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ enum {
3636
#undef DIAG_ENUM_ITEM
3737
#undef DIAG_ENUM
3838
} // end namespace diag
39+
40+
namespace diag_compat {
41+
#define DIAG_COMPAT_IDS_BEGIN() enum {
42+
#define DIAG_COMPAT_IDS_END() \
43+
} \
44+
;
45+
#define DIAG_COMPAT_ID(IDX, NAME, ...) NAME = IDX,
46+
#include "clang/Basic/DiagnosticFrontendCompatIDs.inc"
47+
#undef DIAG_COMPAT_ID
48+
#undef DIAG_COMPAT_IDS_BEGIN
49+
#undef DIAG_COMPAT_IDS_END
50+
} // end namespace diag_compat
3951
} // end namespace clang
4052

4153
#endif // LLVM_CLANG_BASIC_DIAGNOSTICFRONTEND_H

0 commit comments

Comments
 (0)