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

            Bug ID: 118742
           Summary: No way to do ~a for a boolean type with the gimple FE
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
            Blocks: 101057
  Target Milestone: ---

Take:
```
_Bool __GIMPLE (ssa,startwith("optimized")) g1(int i)
{
  _Bool _1;
  int _2;
  _Bool _37;
  _Bool _52;
  _Bool _6;
  _Bool _9;

  __BB(2,guessed_local(97603132)):
  _1 = i_3(D) == 1;
  _2 = (int) _1;
  _37 = _2 > 0;
  _52 = ~_37;
  _6 = _2 <= 0;
  _9 = _6 | _52;
  return _9;
}
```

This is rejected because a convert is added for the `~`:
```
<source>: In function 'g1':
<source>:19:1: error: invalid operand in unary operation
   19 | }
      | ^
_52 = ~(int) _37;
```


I noticed this while trying to see if I could extract a gimple testcase for PR
118739 .


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101057
[Bug 101057] [meta-bug] [gimplefe] GIMPLE frontend issues

Reply via email to