Presumably because CLI will change the status register and you the status register cannot be changed until it has first been saved.
Okay that is plausible, but there's still the chance that it may interrupt between line 1-2?
And why has r1 to be cleared? Just because the compiler generated code assumes something is a little vague reason.
“but there's still the chance that it may interrupt between line 1-2?”
From reading the explanation on the webpage you link to, it looks like if the function is entered through an interrupt then it can't get interrupted between lines 1 and 2, and if it is entered by a function call then it does not matter if it gets interrupted between lines 1 and 2 (any more than it matters that any function call gets interrupted).
I would have to look at the compiler documentation to know why R1 is cleared, but without doing that just assume the compiler expects it to be zero at some point.