[PATCH] D146194: NOT report the warning that unnamed bitfields are uninitialized.

Balázs Benics via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 16 05:59:55 PDT 2023


steakhal added a comment.

Okay, thanks for clarifying.

So, it seems like it depends on the language flavor, but why does CSA behave differently in C and C++?
This is necessary to understand if we need to fix that instead of patching this particular checker.

I'd still add a test to the `clang/test/Analysis/unnamedBitfields.c`, something like this:

  // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s -x c
  // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s -x c++
  
  typedef struct {
    unsigned x : 3;
    unsigned : 29; 
    unsigned y;
  } A;
  void take_by_value(A a);
  
  void initlistExpr(void) {
    A a = {0}; // zero-initializes all fields
    take_by_value(a); // no-warning
  }
  
  void defaultConstruct(void) {
    A a; // uninitialized
    a.x = 0;
    take_by_value(a); // expected-warning{{Passed-by-value struct argument contains uninitialized data (e.g., field: 'y')}}
  }



---

FYI you can add syntax highlighting for your snippets here by:

  ```lang=C++


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146194/new/

https://reviews.llvm.org/D146194



More information about the cfe-commits mailing list