https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110464

            Bug ID: 110464
           Summary: Improve -Wdiv-by-zero
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mpolacek at gcc dot gnu.org
  Target Milestone: ---

int
f0 ()
{
  constexpr int e = 0;
  if (e != 0)
    return 10 / e; // { dg-bogus "division" }
  return 0;
}

int
f1 ()
{
  constexpr int e = 0;
  goto foo;
  if (e != 0)
foo:
    return 10 / e; // { dg-warning "division" }
  return 0;
}

int
f2 ()
{
  constexpr int e = 0;
  switch (e)
    {
    case 0:
      return 10 / e; // { dg-warning "division" }
    default:
      return 0;
    }
}

int
f3 ()
{
  constexpr int e = 0;
  switch (e)
    {
    case 1:
      return 10 / e; // { dg-bogus "division" }
    default:
      return 0;
    }
}

$ xclang++ -c u.C
u.C:17:15: warning: division by zero is undefined [-Wdivision-by-zero]
   17 |     return 10 / e; // { dg-warning "division" }
      |               ^ ~
u.C:28:17: warning: division by zero is undefined [-Wdivision-by-zero]
   28 |       return 10 / e; // { dg-warning "division" }
      |                 ^ ~
2 warnings generated.

$ xg++ -c u.C
u.C: In function ‘int f0()’:
u.C:6:15: warning: division by zero [-Wdiv-by-zero]
    6 |     return 10 / e; // { dg-bogus "division" }
      |            ~~~^~~
u.C: In function ‘int f1()’:
u.C:17:15: warning: division by zero [-Wdiv-by-zero]
   17 |     return 10 / e; // { dg-warning "division" }
      |            ~~~^~~
u.C: In function ‘int f2()’:
u.C:28:17: warning: division by zero [-Wdiv-by-zero]
   28 |       return 10 / e; // { dg-warning "division" }
      |              ~~~^~~
u.C: In function ‘int f3()’:
u.C:41:17: warning: division by zero [-Wdiv-by-zero]
   41 |       return 10 / e; // { dg-bogus "division" }
      |              ~~~^~~

Reply via email to