<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/148875>148875</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            False negative in Clang Static Analyzer if an aggregate is initialized with parnthesized list
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:static analyzer
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          necto
      </td>
    </tr>
</table>

<pre>
    [C++20 Enabled treatment parenthesized initialization as aggregate initialization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0960r3.html)
Clang Static Analyzer, however, [does not handle it properly](https://compiler-explorer.com/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:14,positionColumn:1,positionLineNumber:14,selectionStartColumn:1,selectionStartLineNumber:14,startColumn:1,startLineNumber:14),source:'struct+Storage+%7B%0A++int+x%3B%0A%7D%3B%0A%0Aint+t1()+%7B%0A++++Storage+w%7B32%7D%3B%0A++++return+1+/+(w.x+-+32)%3B%0A%7D%0A%0Aint+t2()+%7B%0A++++Storage+w(32)%3B%0A++++return+1+/+(w.x+-+32)%3B%0A%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:51.701121955375044,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((g:!((h:compiler,i:(compiler:clang201assert,filters:(b:'0',binary:'1',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1',verboseDemangling:'0'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'--analyze+-std%3Dc%2B%2B20',overrides:!(),selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1),l:'5',n:'0',o:'+x86-64+clang+20.1.0+(assertions)+(Editor+%231)',t:'0')),header:(),k:48.29887804462494,l:'4',m:16.754631264495075,n:'0',o:'',s:0,t:'0'),(g:!((h:output,i:(compilerName:'x86-64+clang+20.1.0',editorid:1,fontScale:14,fontUsePx:'0',j:1,wrap:'1'),l:'5',n:'0',o:'Output+of+x86-64+clang+20.1.0+(assertions)+(Compiler+%231)',t:'0')),header:(),l:'4',m:83.24536873550493,n:'0',o:'',s:0,t:'0')),k:48.29887804462494,l:'3',n:'0',o:'',t:'0')),l:'2',n:'0',o:'',t:'0')),version:4):
```C++
struct Storage {
  int x;
};

int t1() {
    Storage w{32};
    return 1 / (w.x - 32); // Division by zero reported
}

int t2() {
    Storage w(32);
    return 1 / (w.x - 32); // False negative
}
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysV99v4y4S_2vIC0qEwfjHQx6SdPN02p5U3b1je-KwR8ACnDT9608YJ6mb7H7baqUqNcxPZuYzMMI52WqAJeJrxJ9movd7Y5caam9mlWnOgbBBdI3omhL8Q4tKQYO9BeEPoD3uhAXt9-DkGzRYaumlUPJNeGk0Fg6LtrXQCg8faIg_IVrsve8cYitEt4huT6fTwnSg5843C2NbRLe_fJ0gunU1pYGhpWHVmNohuu1EBzZ8UJKUYU3KjFi22PuDQrREZLVRQrf4xQsva7zSQp3fwCK6wXtzgmP8RHzdGHBYG4_3QjcKsPS4s6YDq86P3KzNoZMK7BxeO2Us2EVtDgOJtQNTgmiBaPH7xR6xVW0a-NFIb4IXcqAWO6lAiwMMqzxBNEd0szPav9RChd0kHTf-4-Dfr5GNRLZfgYzocOSgHlEesjb8bBwoqIewD3ZANxuj-oMeZUA3_5IafvaHCuzFTGecDCITzsvmPfvVxIsX1k-EpqQHovcSDxnLQDG9rccAOW_72iO6fvHGihaGMuV5-CGrWLNSB_oropxdtnn-NFmSVWTyMTnlAy3x72blNDAweqfsxmzB91Yjuk6G9Xb4LU6LV0TXc0QH4fLeralH9CseFXcq_4o3eYy7iiHnsdj0pPRMXG3el9x6TFTcYGMt-_dyZdT8P8RWPFnkJEloUnLOck7S9GYy_YPJuAjQJA-0bz4BwgjlGwSvO2xVByhRkgjnwPoAPKl86DgDYzXxp5Ja2PMEt3HrufoFtZ8QanMIrfNZq_NERwNV326EUm7C3sBB6FbBlFfaAKkjuMk2vELd-2n_kNqDmnApWVlhzxvTTJV6Kw8T0SPYyjh4ih5I3X4M8E6J1v1Xwum5A_3Xu5aSlXuXsWDQdKGPjIeez0Xs6aGKnW9CAT-9U0EvxXIEa2UDH5V9tSt-rSl-vyd-tiV-6IjJp5EaWmKRzbMU0fVQ5cPtvkgWJDaGWPFDoMfuU1yuqiucy98jeg-iGTy8RjpgPC0WtCyKvCBpmtG0vId4KL4kW-Q8zVhCszQtOQnn-CvYD3A3ve96fw_2n9c797dhGdA1xEA2Y0a-WOInK7r3EPlkrp5Hn9dm9420ba4N7nuJu09QwRY05SwrcsY5SUv2vfx8oirYPzb-R0pHYfot4SNYF_vB8NxgK0RWKCPxb3wGI7KKDw88Xr8Y5WETY6k9fkUsLFD-NH4Mlzm-PC6uvPgqfULDU-IiEEjxusYJRnSL40WN5zhe0myN4zMUP8mjDN7i6ozfwBpsoTPWQzPavxmnfzB-eTd80fhWKAdYh6e9PMLN4iVYiKxmzZI1JSvFDJZJzikv0yJNZ_tlxjmvgRcNhYqJjBFgu6TMdlkDFQ38ckkJ5SRPeMJ5StJFyWtGCWO7Zkc5yxqUEjgIqRZKHQ9hVJhJ53pYJmlR5HymRAXKDTMNpfV4t7g4BojrGEDDwGOXQcW86luHUqKk8-6m1EuvYDk9KpYaP5wrsNxhod8PPO4280CDT9Lvw7h0m5aCtVlv1XI6X7TS7_tqHCqCL-O_eWfN8Jig2-G0YfQZD3xc0v8HAAD__ztHyfE">