По-нашему, если компилятор хотел реентрантно складывать, ему следовало бы сохранить собственные регистры этой подпрограммы в стеке. А так они при каждом вызове тупо переписываются. Сколько бы ret подряд не было - функция будет отдавать результат последнего сложения. Собственно для устранения последствий этого бага мне приборчик и приносили
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)