#version 310 es
precision mediump float;

int a = 0;
void uses_a() {
  a = (a + 1);
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main1() {
  a = 42;
  uses_a();
  return;
}

void main() {
  main1();
}

#version 310 es
precision mediump float;

int b = 0;
void uses_b() {
  b = (b * 2);
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main2() {
  b = 7;
  uses_b();
  return;
}

void main() {
  main2();
}

#version 310 es
precision mediump float;

int a = 0;
int b = 0;
void uses_a() {
  a = (a + 1);
}

void uses_b() {
  b = (b * 2);
}

void uses_a_and_b() {
  b = a;
}

void no_uses() {
}

void outer() {
  a = 0;
  uses_a();
  uses_a_and_b();
  uses_b();
  no_uses();
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main3() {
  outer();
  no_uses();
  return;
}

void main() {
  main3();
}

#version 310 es
precision mediump float;

void no_uses() {
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main4() {
  no_uses();
  return;
}

void main() {
  main4();
}

