Up until now, we used to model call-clobbering semantics using a unique
artificial symbol called .GLOBAL_VAR. The idea is that at every
call-site, a new SSA name for .GLOBAL_VAR is created. References to
call-clobbered variables are turned into references to .GLOBAL_VAR.
The scheme works well in terms of compile time performance, but
globbing
all those symbols to .GLOBAL_VAR ties up the optimizers because
references to any call-clobbered symbol turns into a reference to
.GLOBAL_VAR.
With this patch, we only resort to using .GLOBAL_VAR if the number of
call sites and call-clobbered variables is large than certain
threshold. I chose a threshold based on a typical bootstrap cycle
(including all target libraries). That could certainly be changed
later
on.