From f6f70933698bcfaa2f7fbed24dcc75784d80d5bb Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 27 May 2009 23:55:14 -0700 Subject: clean up gmove: * conversions all in one place. * no separate load, store phases; direct memory addressing when possible (this is the x86 after all!). avoids extra registers, extra MOVQs. * fixes int32 -> uint64 bug (was zero-extending) R=ken OCL=29482 CL=29484 --- src/cmd/gc/subr.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/cmd/gc/subr.c') diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index de32c8e6d..dcaa11a00 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -671,7 +671,6 @@ opnames[] = [OCOMPOS] = "COMPOS", [OCOMPSLICE] = "COMPSLICE", [OCOM] = "COM", - [OCONST] = "CONST", [OCONTINUE] = "CONTINUE", [OCONV] = "CONV", [ODCLARG] = "DCLARG", @@ -3015,3 +3014,29 @@ runifacechecks(void) } lineno = lno; } + +/* + * even simpler simtype; get rid of ptr, bool. + * assuming that the front end has rejected + * all the invalid conversions (like ptr -> bool) + */ +int +simsimtype(Type *t) +{ + int et; + + et = simtype[t->etype]; + switch(et) { + case TPTR32: + et = TUINT32; + break; + case TPTR64: + et = TUINT64; + break; + case TBOOL: + et = TUINT8; + break; + } + return et; +} + -- cgit v1.2.3