Компилятор усложнит это точно.
К тому же ваше изначальное утвержение, что из описания языка слудует, что могут быть перегруженные функции, неправильно.
Если внимательно почитать сообщение о языке, то можно найти:
Every identifier occurring in a program must be introduced by a declaration, unless it is a
predefined identifier. Declarations also serve to specify certain permanent properties of an object,
such as whether it is a constant, a type, a variable, or a procedure.
The identifier is then used to refer to the associated object. This is possible in those parts of a
program only which are within the scope of the declaration. No identifier may denote more than
one object within a given scope.