/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-ccp1" } */
/* PR tree-optimization/111543 */

void f_or(int a, int b, int *por)
{
        int c = ~a;
        *por = (c | b) | a;
}
void f_and(int a, int b, int *pand)
{
        int c = ~a;
        *pand = (c & b) & a;
}
/* { dg-final { scan-tree-dump-times "pand_\[0-9\]+.D. = 0" 1 "optimized" } } */
/* { dg-final { scan-tree-dump-times "por_\[0-9\]+.D. = -1" 1 "optimized" } } */
/* { dg-final { scan-tree-dump-times "pand_\[0-9\]+.D. = 0" 1 "ccp1" } } */
/* { dg-final { scan-tree-dump-times "por_\[0-9\]+.D. = -1" 1 "ccp1" } } */