/* PR c/64249 */
/* { dg-do compile } */
/* { dg-options "-Wall -Wno-duplicated-cond" } */

#ifndef __cplusplus
# define bool _Bool
# define true 1
# define false 0
#endif

extern int foo (void);

int
fn1 (int n)
{
  if (n == 1)
    return -1;
  else if (n == 2)
    return 0;
  else if (n == 1)
    return 1;
  return 0;
}

int
fn2 (void)
{
  if (4)
    return 1;
  else if (4)
    return 2;

#define N 10
  if (N)
    return 3;
  else if (N)
    return 4;
}

int
fn3 (int n)
{
  if (n == 42)
    return 1;
  if (n == 42)
    return 2;

  if (n)
    if (n)
      if (n)
	if (n)
	  return 42;

  if (!n)
    return 10;
  else
    return 11;
}

int
fn4 (int n)
{
  if (n > 0)
    {
      if (n == 1)
	return 1;
      else if (n == 1)
	return 2;
    }
  else if (n < 0)
    {
      if (n < -1)
	return 6;
      else if (n < -2)
	{
	  if (n == -10)
	    return 3;
	  else if (n == -10)
	    return 4;
	}
    }
  else
    return 7;
  return 0;
}

struct S { long p, q; };

int
fn5 (struct S *s)
{
  if (!s->p)
    return 12345;
  else if (!s->p)
    return 1234;
  return 0;
}

int
fn6 (int n)
{
  if (n)
    return n;
  else if (n)
    return n;
  else if (n)
    return n;
  else if (n)
    return n;
  else if (n)
    return n;
  else if (n)
    return n;
  else if (n)
    return n;
  else if (n)
    return n;
  return 0;
}

int
fn7 (int n)
{
  if (n == 0)
    return 10;
  else if (n == 1)
    return 11;
  else if (n == 2)
    return 12;
  else if (n == 3)
    return 13;
  else if (n == 4)
    return 14;
  else if (n == 5)
    return 15;
  else if (n == 6)
    return 16;
  else if (n == 7)
    return 17;
  else if (n == 0)
    return 100;
  else if (n == 1)
    return 101;
  else if (n == 2)
    return 102;
  else if (n == 3)
    return 103;
  else if (n == 4)
    return 104;
  else if (n == 5)
    return 105;
  else if (n == 6)
    return 106;
  else if (n == 7)
    return 107;
  return 0;
}

int
fn8 (bool b)
{
  if (!b)
    return 16;
  else if (!b)
    return 27;
  else
    return 64;
}

int
fn9 (int i, int j, int k)
{
  if ((i > 0 && j > 0 && k > 0)
      && ((i > 11 && j == 76 && k < 10)
	  || (i < 0 && j == 99 && k > 103)))
    return -999;
  else
  if ((i > 0 && j > 0 && k > 0)
      && ((i > 11 && j == 76 && k < 10)
	  || (i < 0 && j == 99 && k > 103)))
    return 999;
  else
    return 0;
}

int
fn10 (void)
{
  if (foo ())
    return 17329;
  else if (foo ())
    return 18409;
  return 0;
}

int
fn11 (int n)
{
  if (++n == 10)
    return 666;
  else if (++n == 10)
    return 9;
  return 0;
}
