compiler, libgo: Fixes to prepare for 64-bit int.

From-SVN: r193254
This commit is contained in:
Ian Lance Taylor 2012-11-06 18:28:21 +00:00
parent 855a44ee8f
commit fb3f38da2a
12 changed files with 28 additions and 21 deletions

View File

@ -2568,8 +2568,12 @@ Integer_type::create_abstract_integer_type()
{ {
static Integer_type* abstract_type; static Integer_type* abstract_type;
if (abstract_type == NULL) if (abstract_type == NULL)
abstract_type = new Integer_type(true, false, INT_TYPE_SIZE, {
Type* int_type = Type::lookup_integer_type("int");
abstract_type = new Integer_type(true, false,
int_type->integer_type()->bits(),
RUNTIME_TYPE_KIND_INT); RUNTIME_TYPE_KIND_INT);
}
return abstract_type; return abstract_type;
} }

View File

@ -13,11 +13,11 @@
We deliberately don't split the stack in case it does call the We deliberately don't split the stack in case it does call the
library function, which shouldn't need much stack space. */ library function, which shouldn't need much stack space. */
int IndexByte (struct __go_open_array, char) intgo IndexByte (struct __go_open_array, char)
asm ("bytes.IndexByte") asm ("bytes.IndexByte")
__attribute__ ((no_split_stack)); __attribute__ ((no_split_stack));
int intgo
IndexByte (struct __go_open_array s, char b) IndexByte (struct __go_open_array s, char b)
{ {
char *p; char *p;

View File

@ -6,14 +6,16 @@
#include <syslog.h> #include <syslog.h>
#include "runtime.h"
/* We need to use a C function to call the syslog function, because we /* We need to use a C function to call the syslog function, because we
can't represent a C varargs function in Go. */ can't represent a C varargs function in Go. */
void syslog_c(int, const char*) void syslog_c(intgo, const char*)
asm ("log_syslog.syslog_c"); asm ("log_syslog.syslog_c");
void void
syslog_c (int priority, const char *msg) syslog_c (intgo priority, const char *msg)
{ {
syslog (priority, "%s", msg); syslog (priority, "%s", msg);
} }

View File

@ -10,10 +10,10 @@
#include "arch.h" #include "arch.h"
#include "malloc.h" #include "malloc.h"
String Signame (int sig) asm ("syscall.Signame"); String Signame (intgo sig) asm ("syscall.Signame");
String String
Signame (int sig) Signame (intgo sig)
{ {
const char* s = NULL; const char* s = NULL;
char buf[100]; char buf[100];
@ -27,7 +27,7 @@ Signame (int sig)
if (s == NULL) if (s == NULL)
{ {
snprintf(buf, sizeof buf, "signal %d", sig); snprintf(buf, sizeof buf, "signal %ld", (long) sig);
s = buf; s = buf;
} }
len = __builtin_strlen (s); len = __builtin_strlen (s);

View File

@ -124,7 +124,7 @@ static uintptr eod[3] = {0, 1, 0};
static void LostProfileData(void) { static void LostProfileData(void) {
} }
extern void runtime_SetCPUProfileRate(int32) extern void runtime_SetCPUProfileRate(intgo)
__asm__("runtime.SetCPUProfileRate"); __asm__("runtime.SetCPUProfileRate");
// SetCPUProfileRate sets the CPU profiling rate. // SetCPUProfileRate sets the CPU profiling rate.

View File

@ -106,10 +106,11 @@ __go_map_next_prime (uintptr_t n)
struct __go_map * struct __go_map *
__go_new_map (const struct __go_map_descriptor *descriptor, uintptr_t entries) __go_new_map (const struct __go_map_descriptor *descriptor, uintptr_t entries)
{ {
intgo ientries; int32 ientries;
struct __go_map *ret; struct __go_map *ret;
ientries = (intgo) entries; /* The master library limits map entries to int32, so we do too. */
ientries = (int32) entries;
if (ientries < 0 || (uintptr_t) ientries != entries) if (ientries < 0 || (uintptr_t) ientries != entries)
runtime_panicstring ("map size out of range"); runtime_panicstring ("map size out of range");

View File

@ -14,7 +14,7 @@
characters used from STR. */ characters used from STR. */
int int
__go_get_rune (const unsigned char *str, size_t len, int *rune) __go_get_rune (const unsigned char *str, size_t len, int32 *rune)
{ {
int c, c1, c2, c3, l; int c, c1, c2, c3, l;

View File

@ -26,6 +26,6 @@ __go_ptr_strings_equal (const String *ps1, const String *ps2)
return __go_strings_equal (*ps1, *ps2); return __go_strings_equal (*ps1, *ps2);
} }
extern int __go_get_rune (const unsigned char *, size_t, int *); extern int __go_get_rune (const unsigned char *, size_t, int32 *);
#endif /* !defined(LIBGO_GO_STRING_H) */ #endif /* !defined(LIBGO_GO_STRING_H) */

View File

@ -29,13 +29,13 @@ runtime_printtrace (uintptr *pcbuf, int32 c)
{ {
String fn; String fn;
String file; String file;
int line; intgo line;
if (__go_file_line (pcbuf[i], &fn, &file, &line) if (__go_file_line (pcbuf[i], &fn, &file, &line)
&& runtime_showframe (fn.str)) && runtime_showframe (fn.str))
{ {
runtime_printf ("%S\n", fn); runtime_printf ("%S\n", fn);
runtime_printf ("\t%S:%d\n", file, line); runtime_printf ("\t%S:%D\n", file, (int64) line);
} }
} }
} }

View File

@ -610,11 +610,11 @@ runtime_goroutinetrailer(G *g)
if(g != nil && g->gopc != 0 && g->goid != 1) { if(g != nil && g->gopc != 0 && g->goid != 1) {
String fn; String fn;
String file; String file;
int line; intgo line;
if(__go_file_line(g->gopc - 1, &fn, &file, &line)) { if(__go_file_line(g->gopc - 1, &fn, &file, &line)) {
runtime_printf("created by %S\n", fn); runtime_printf("created by %S\n", fn);
runtime_printf("\t%S:%d\n", file, line); runtime_printf("\t%S:%D\n", file, (int64) line);
} }
} }
} }

View File

@ -341,7 +341,7 @@ int32 runtime_ncpu;
/* /*
* common functions and data * common functions and data
*/ */
int32 runtime_findnull(const byte*); intgo runtime_findnull(const byte*);
void runtime_dump(byte*, int32); void runtime_dump(byte*, int32);
/* /*
@ -614,7 +614,7 @@ extern uintptr runtime_stacks_sys;
struct backtrace_state; struct backtrace_state;
extern struct backtrace_state *__go_get_backtrace_state(void); extern struct backtrace_state *__go_get_backtrace_state(void);
extern _Bool __go_file_line(uintptr, String*, String*, int *); extern _Bool __go_file_line(uintptr, String*, String*, intgo *);
extern byte* runtime_progname(); extern byte* runtime_progname();
int32 getproccount(void); int32 getproccount(void);

View File

@ -54,7 +54,7 @@ func stringiter(s String, k int) (retk int) {
out: out:
} }
func stringiter2(s String, k int) (retk int, retv int) { func stringiter2(s String, k int) (retk int, retv int32) {
if(k >= s.len) { if(k >= s.len) {
// retk=0 is end of iteration // retk=0 is end of iteration
retk = 0; retk = 0;