Sketch controllo encoder con interrupt - ho bisogno di chiarimenti

Come fa notare PaoloP ci possono essere altri motivi che ci portano a salvare SREG. La domanda è:
Siamo davvero così infallibili da ricordarci cosa abbiamo scritto nella funzione x tre mesi fa, io no.
Io l'ho scritta non la guardo da tre mesi e ora mi viene in mente che posso usarla nel codice di esempio.

void loop(){
  uint8_t oldSREG = SREG;
  cli();
  fuctionVeryOld();
  Pos = encoderPos;      // ops doveva essere eseguita atomicamente. 
  SREG = oldSREG;
  if(Pos != oldPos){
    Serial.println(Pos,DEC);
    oldPos = Pos;
  }
  delay(1000);
}

Se functionVeryOld disabilita con cli() ed esegue codice e poi prima di uscire riabilita gli interrupt con sei()
si verifica il problema. Mi ritrovo ad eseguire codice con gli iterrupt abilitati quando e chiaro che io li ho disabilitati, chi li riabilita?

Qui è semplice capire che fuctionVeryOld() potrebbe essere la causa, e allora vado a vedere il codice sorgente,
nel caso io non l'avessi il codice sorgente quella funzione è da considerare buggata.

Siamo davvero in grado si seguire l'evoluzione del codice a mente e ricordarci tutto?
Io non me la sento di rischiare e allora uso la macro, che salva SREG e lascia l'ambiente nello stesso modo in cui
lo ha ricevuto.

Altro motivo per usare la macro:
Salvo SREG, cli() e mi dimentico di ripristinare lo stato di SREG.
Con la macro la dimenticanza non può proprio verificarsi e al massimo mi scordo a chiudere } e
il compilatore me lo segnala.

Quindi io raccomando di usare la macro anche in ambiente arduino. Come detto nel libro l'esempio è
didattico e ci sta mostrare i passaggi.

Ciao.