We probably have name conflict issues in our yul codgen. For example, we use the user-supplied fn arg names, which might conflict with our v0, v1, .. var names.
fn foo(v0: u256) {
let x = 1
..
probably becomes
function foo(v0) {
let v0 := 1
..
There are almost certainly other possible name collision cases, eg if two fe functions have the same name but are in different modules, they (probably) end up in yul with the same name.