<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/clang/lib/Analysis/FlowSensitive/Models/UncheckedStatusOrAccessModel.cpp, branch users/fmayer/spr/wip-smartpointers</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>rebase</title>
<updated>2025-10-22T17:55:10+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-22T17:55:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f5f8398d7fe18a968f5873518e87d5fdd8269359'/>
<id>f5f8398d7fe18a968f5873518e87d5fdd8269359</id>
<content type='text'>
Created using spr 1.3.7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Created using spr 1.3.7
</pre>
</div>
</content>
</entry>
<entry>
<title>[𝘀𝗽𝗿] changes introduced through rebase</title>
<updated>2025-10-22T17:55:10+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-22T17:55:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a0abc0af0a0a90878822f8107d70dad6f7cdfc26'/>
<id>a0abc0af0a0a90878822f8107d70dad6f7cdfc26</id>
<content type='text'>
Created using spr 1.3.7

[skip ci]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Created using spr 1.3.7

[skip ci]
</pre>
</div>
</content>
</entry>
<entry>
<title>[FlowSensitive] [StatusOr] [3/N] Support absl::Status ops (#163868)</title>
<updated>2025-10-21T20:50:08+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-21T20:50:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=419fbf906b7d21808fdf768f07e4791a24b22c99'/>
<id>419fbf906b7d21808fdf768f07e4791a24b22c99</id>
<content type='text'>
`absl::StatusOr::status` allows extraction of the status associated with
a StatusOr value. That can also be used to check whether the StatusOr
has a value or not.

This makes sure code like this is checked properly:

```cpp
int target(absl::StatusOr&lt;int&gt; SOR) {
  if (SOR.status().ok())
    return *SOR;
  return 0;
}
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`absl::StatusOr::status` allows extraction of the status associated with
a StatusOr value. That can also be used to check whether the StatusOr
has a value or not.

This makes sure code like this is checked properly:

```cpp
int target(absl::StatusOr&lt;int&gt; SOR) {
  if (SOR.status().ok())
    return *SOR;
  return 0;
}
```</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] [FlowSensitive] [StatusOr] remove unused function (#164351)</title>
<updated>2025-10-21T01:38:08+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-21T01:38:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9c3ed5a389ce04c78d9738c3a7537ff9c702f420'/>
<id>9c3ed5a389ce04c78d9738c3a7537ff9c702f420</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>rebase</title>
<updated>2025-10-20T23:58:12+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-20T23:58:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=73edaec4a6cd1212f9ae819c413d2cf58216d3b1'/>
<id>73edaec4a6cd1212f9ae819c413d2cf58216d3b1</id>
<content type='text'>
Created using spr 1.3.7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Created using spr 1.3.7
</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply "[FlowSensitive] [StatusOr] [2/N] Add minimal model" (#164040) (#164305)</title>
<updated>2025-10-20T23:56:49+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-20T23:56:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0833b48760efb72318952f1f0eb4cbd45eb941f4'/>
<id>0833b48760efb72318952f1f0eb4cbd45eb941f4</id>
<content type='text'>
This reverts commit eed8d3aa4aa6efe01fcf7bd56015b671f5f18e29.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit eed8d3aa4aa6efe01fcf7bd56015b671f5f18e29.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[FlowSensitive] [StatusOr] [2/N] Add minimal model" (#164040)</title>
<updated>2025-10-18T02:07:10+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-18T02:07:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=eed8d3aa4aa6efe01fcf7bd56015b671f5f18e29'/>
<id>eed8d3aa4aa6efe01fcf7bd56015b671f5f18e29</id>
<content type='text'>
Reverts llvm/llvm-project#162932

Failed Tests (1):
  Clang-Unit :: ./AllClangUnitTests/failed_to_discover_tests_from_gtest</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#162932

Failed Tests (1):
  Clang-Unit :: ./AllClangUnitTests/failed_to_discover_tests_from_gtest</pre>
</div>
</content>
</entry>
<entry>
<title>rebase</title>
<updated>2025-10-17T23:54:38+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-17T23:54:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6682c1834dc4e68e27ddac29997125a25de4443c'/>
<id>6682c1834dc4e68e27ddac29997125a25de4443c</id>
<content type='text'>
Created using spr 1.3.7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Created using spr 1.3.7
</pre>
</div>
</content>
</entry>
<entry>
<title>[FlowSensitive] [StatusOr] [2/N] Add minimal model (#162932)</title>
<updated>2025-10-17T23:52:44+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-17T23:52:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fe029934eb0782f011c839f0c6641bfa56ef3d1b'/>
<id>fe029934eb0782f011c839f0c6641bfa56ef3d1b</id>
<content type='text'>
This model implements a dataflow analysis for reporting instances of
unchecked use of absl::StatusOr values. It makes sure that every use
the value of a StatusOr object is dominated by a check that the
StatusOr object is ok.

This is an example of code that will be flagged by the analysis:

```cpp
int f(absl::StatusOr&lt;int&gt; SOR) {
  return SOR.value();
}
```

This is an example of code that will not be flagged by the analysis:

```cpp
int f(absl::StatusOr&lt;int&gt; SOR) {
  if (SOR.ok())
    return SOR.value();
  return 0;
}
```

This model has successfully been used by Google for some time now.

This is the initial commit that adds the simplest possible model, that
only models calls to `ok()` and checks for unsafe accesses. I will add
more fidelity to the model in follow up changes.

The test setup is notable in that it has an extra indirection. This is
because we have an internal model that extends the model we intend to
upstream, in order to model special constructs only found in our code
base. The parametrized test allows us (and anyone who chooses to do
this) to make sure our extensions do not break the base functionality.

RFC:
https://discourse.llvm.org/t/rfc-abseil-unchecked-statusor-use-check/87998</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This model implements a dataflow analysis for reporting instances of
unchecked use of absl::StatusOr values. It makes sure that every use
the value of a StatusOr object is dominated by a check that the
StatusOr object is ok.

This is an example of code that will be flagged by the analysis:

```cpp
int f(absl::StatusOr&lt;int&gt; SOR) {
  return SOR.value();
}
```

This is an example of code that will not be flagged by the analysis:

```cpp
int f(absl::StatusOr&lt;int&gt; SOR) {
  if (SOR.ok())
    return SOR.value();
  return 0;
}
```

This model has successfully been used by Google for some time now.

This is the initial commit that adds the simplest possible model, that
only models calls to `ok()` and checks for unsafe accesses. I will add
more fidelity to the model in follow up changes.

The test setup is notable in that it has an extra indirection. This is
because we have an internal model that extends the model we intend to
upstream, in order to model special constructs only found in our code
base. The parametrized test allows us (and anyone who chooses to do
this) to make sure our extensions do not break the base functionality.

RFC:
https://discourse.llvm.org/t/rfc-abseil-unchecked-statusor-use-check/87998</pre>
</div>
</content>
</entry>
<entry>
<title>[𝘀𝗽𝗿] initial version</title>
<updated>2025-10-17T20:47:26+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-10-17T20:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a02637384ca83412614d61ef73826f529f6de31a'/>
<id>a02637384ca83412614d61ef73826f529f6de31a</id>
<content type='text'>
Created using spr 1.3.7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Created using spr 1.3.7
</pre>
</div>
</content>
</entry>
</feed>
