GCC can eliminate tail recursion, so does that make C functional?
I don't think the author is seriously of the belief that C is a functional language. This is just a fun little example of writing C in a functional style.
With foldl', of course. If you don't have tail recursion elimination, foldl' would have to be provided as a built-in.
Summing up numbers is inherently strict, so you'd want tail call elimination for that. But functional mainstains, like say, map or filter are usually not implemented with tail recursion in Haskell, because that would be too strict and would break on infinite lists.
I think you might have misinterpreted the contents of that page. As someone who has worked on GHC, I can assure you that it does perform tail call optimisation.