/* I expected this to print: 0, 1, 2, default
   It doesn't.
   GCC used to treat this an error, but 7.3.0 quietly compiles it
   and sits back to enjoy watching you try to figure it out.
   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=7508 */

void setup() {
  Serial.begin(115200);
}

void thatsodd(int a) {
  switch (a) {
    case 0:
      int b = a;  // comment out this line and it will work
      Serial.println(0);
      break;
    case 1:
      Serial.println(1);
      break;
    case 2:
      Serial.println(2);
      break;
    default:
      Serial.println("default");
      break;
  }
}

void loop() {
  Serial.println("Begin");
  thatsodd(0);
  thatsodd(1);
  thatsodd(2);
  thatsodd(255);
  Serial.println("End");
  while (1);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5