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

            Bug ID: 110165
           Summary: [13/14 Regression] wrong code with signed 1 bit
                    integers sometimes since r13-4459-g6508d5e5a1a8
           Product: gcc
           Version: 13.1.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: pinskia at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Full testcase:
````
struct s
{
  int t : 1;
};

[[gnu::noipa]]
int f(struct s t, int a, int b)
{
        int bd = t.t;
        if (bd) a|=b;
        return a;
}

int main(void)
{
        struct s t;
        for(int i = 0;i <= 1; i++)
        {
                int a = 0x10;
                int b = 0x0f;
                int c = a | b;
                int r = f((struct s){i}, a, b);
                int exp = i == 1 ? a | b : a;
                if (exp != r)
                 __builtin_abort();
        }
}
```

Found while improving these match patterns.

Reply via email to