------- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-10 00:47 ------- We cannot do 1 as that is not allowed by the C standard (or at least a DR report of it). Also the reason why this was changed was because the tree inliner was crashing on things like this if the type was float and the real argument was int. The correct thing to do is do a correct prototype aka void f(short); in the first place, other wise the code will not work anyways on some targets where int is passed one way and short are passed another or var args are done one way and normal arguments are done another way, this does happen which is why this is undefined in the first place in C.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18411