ziqingluo-90 wrote:
Learned more about how loaded files & ASTs are managed in clang. Now opt-out
regions in a loaded AST can span over multiple files (within one TU). They now
behave in a consistent way when they are from loaded files or local files.
https://github.com/llvm/llvm-project/pul
https://github.com/ziqingluo-90 updated
https://github.com/llvm/llvm-project/pull/92031
>From ac5aeb5c3a134d085320fc7fc5cf3f2c8c41a1f1 Mon Sep 17 00:00:00 2001
From: ziqingluo-90
Date: Mon, 13 May 2024 13:31:21 -0700
Subject: [PATCH 1/4] fix safe buffer opt-out region serialization
---
clang/
ziqingluo-90 wrote:
Just realized how stupid I am (O_o)---the current implementation only compares
source locations with opt-out regions that are in the same source file, for all
source locations from loaded files. This is not going to work for cases like
below.
```
// in a pch header:
#prag
https://github.com/ziqingluo-90 edited
https://github.com/llvm/llvm-project/pull/92031
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/ziqingluo-90 updated
https://github.com/llvm/llvm-project/pull/92031
>From ac5aeb5c3a134d085320fc7fc5cf3f2c8c41a1f1 Mon Sep 17 00:00:00 2001
From: ziqingluo-90
Date: Mon, 13 May 2024 13:31:21 -0700
Subject: [PATCH 1/2] fix safe buffer opt-out region serialization
---
clang/
haoNoQ wrote:
> serializing the pragmas themselves as AST nodes
These pragmas don't really translate very well into the AST. Similarly to
`#pragma clang diagnostic`, they can be placed weirdly "across" other AST
nodes, like:
```
#pragma clang unsafe_buffer_usage begin
void foo() {
#pragma clan
@@ -1551,6 +1567,58 @@ bool
Preprocessor::isPPInSafeBufferOptOutRegion(SourceLocation &StartLoc) {
return InSafeBufferOptOutRegion;
}
+SmallVector
+Preprocessor::serializeSafeBufferOptOutMap() const {
+ assert(!InSafeBufferOptOutRegion &&
haoNoQ wrote:
Ye
danakj wrote:
I am curious so I will ask: why did this take an approach of serializing the
output of the pragmas (the maps) instead of serializing the pragmas themselves
as AST nodes, so that the maps would be constructed in the same way as from
parsing the text directly? that's how other prag
ziqingluo-90 wrote:
> I'm very happy that this is going somewhere! Everything makes sense to me but
> I also don't know a lot about this stuff.
>
> > During serialization, it only serializes regions of the current translation
> > unit. Regions from loaded files are not serialized.
>
> Hmm how
@@ -1551,6 +1567,58 @@ bool
Preprocessor::isPPInSafeBufferOptOutRegion(SourceLocation &StartLoc) {
return InSafeBufferOptOutRegion;
}
+SmallVector
+Preprocessor::serializeSafeBufferOptOutMap() const {
+ assert(!InSafeBufferOptOutRegion &&
ziqingluo-90 wrot
@@ -1551,6 +1567,58 @@ bool
Preprocessor::isPPInSafeBufferOptOutRegion(SourceLocation &StartLoc) {
return InSafeBufferOptOutRegion;
}
+SmallVector
+Preprocessor::serializeSafeBufferOptOutMap() const {
+ assert(!InSafeBufferOptOutRegion &&
+ "Attempt to serialize sa
@@ -1551,6 +1567,58 @@ bool
Preprocessor::isPPInSafeBufferOptOutRegion(SourceLocation &StartLoc) {
return InSafeBufferOptOutRegion;
}
+SmallVector
+Preprocessor::serializeSafeBufferOptOutMap() const {
+ assert(!InSafeBufferOptOutRegion &&
haoNoQ wrote:
We
https://github.com/haoNoQ commented:
I'm very happy that this is going somewhere! Everything makes sense to me but I
also don't know a lot about this stuff.
> During serialization, it only serializes regions of the current translation
> unit. Regions from loaded files are not serialized.
Hmm
https://github.com/haoNoQ edited https://github.com/llvm/llvm-project/pull/92031
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
llvmbot wrote:
@llvm/pr-subscribers-clang-modules
Author: Ziqing Luo (ziqingluo-90)
Changes
A pair of `#pragma clang unsafe_buffer_usage begin/end` pragmas marks a
warning-opt-out region. The begin and end locations (opt-out regions) are
stored in preprocessor instances (PP) and will be
https://github.com/ziqingluo-90 created
https://github.com/llvm/llvm-project/pull/92031
A pair of `#pragma clang unsafe_buffer_usage begin/end` pragmas marks a
warning-opt-out region. The begin and end locations (opt-out regions) are
stored in preprocessor instances (PP) and will be queried b
16 matches
Mail list logo