// RUN: %clang_analyze_cc1 -analyzer-checker=core.DivideZero -std=c++20 -verify %s namespace GH148875 { struct A { int x; A(int v) : x(v) {} }; struct B { int x; B() : x(0) {} }; struct C { int x, y; C(int a, int b) : x(a), y(b) {} }; struct D { int x; }; struct E { D d; E(int a) : d(a) {} }; struct F { int x; }; int t1() { A a{42}; return 1 / (a.x - 42); // expected-warning {{Division by zero}} } int t2() { B b{}; return 1 / b.x; // expected-warning {{Division by zero}} } int t3() { C c1{1, -1}; return 1 / (c1.x + c1.y); // expected-warning {{Division by zero}} } int t4() { C c2{0, 0}; return 1 / (c2.x + c2.y); // expected-warning {{Division by zero}} } int t5() { E e{32}; return 1 / (e.d.x - 32); // expected-warning {{Division by zero}} } int t6() { F f(32); return 1 / (f.x - 32); // expected-warning {{Division by zero}} } } // namespace GH148875