#version 310 es
precision mediump float;

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

void main1() {
  a = 42;
  uses_a();
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
  main1();
  return;
}
#version 310 es
precision mediump float;

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

void main2() {
  b = 7;
  uses_b();
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
  main2();
  return;
}
#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();
}

void main3() {
  outer();
  no_uses();
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
  main3();
  return;
}
#version 310 es
precision mediump float;

void no_uses() {
}

void main4() {
  no_uses();
}

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