llgo/ssa: float Const fix; cl: replaceGoName runtime => llgo/internal/runtime

This commit is contained in:
xushiwei
2024-06-13 00:56:18 +08:00
parent 7dd740f51a
commit 18eecbe9f4
3 changed files with 1423 additions and 5 deletions

View File

@@ -359,9 +359,12 @@ const (
func (p *context) varName(pkg *types.Package, v *ssa.Global) (vName string, vtype int) {
name := llssa.FullName(pkg, v.Name())
if v, ok := p.link[name]; ok {
if strings.HasPrefix(v, "py.") {
if pos := strings.IndexByte(v, '.'); pos >= 0 {
if pos == 2 && v[0] == 'p' && v[1] == 'y' {
return v[3:], pyVar
}
return replaceGoName(v, pos), goVar
}
return v, cVar
}
return name, goVar
@@ -405,6 +408,14 @@ func pkgKindByPath(pkgPath string) int {
return PkgNormal
}
func replaceGoName(v string, pos int) string {
switch v[:pos] {
case "runtime":
return "github.com/goplus/llgo/internal/runtime" + v[pos:]
}
return v
}
// -----------------------------------------------------------------------------
const (

1408
internal/runtime/panic.go Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -194,9 +194,8 @@ func (b Builder) Const(v constant.Value, typ Type) Expr {
return prog.IntVal(v, typ)
}
case kind == types.Float32 || kind == types.Float64:
if v, exact := constant.Float64Val(v); exact {
v, _ := constant.Float64Val(v)
return prog.FloatVal(v, typ)
}
case kind == types.String:
return Expr{b.Str(constant.StringVal(v)).impl, typ}
}