You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(32) |
2
(22) |
3
(47) |
4
(29) |
5
(18) |
6
(16) |
|
7
(21) |
8
(29) |
9
(23) |
10
(68) |
11
(20) |
12
(17) |
13
(17) |
|
14
(27) |
15
(26) |
16
(21) |
17
(13) |
18
(19) |
19
(29) |
20
(13) |
|
21
(9) |
22
(8) |
23
(29) |
24
(56) |
25
(21) |
26
(46) |
27
(33) |
|
28
(25) |
29
(41) |
30
(35) |
31
(28) |
|
|
|
|
From: Christian P. <tr...@ge...> - 2005-08-21 04:09:34
|
On Saturday 20 August 2005 16:27, Tom Hughes wrote: > In message <200...@ge...> > > Christian Parpart <tr...@ge...> wrote: > > On Saturday 20 August 2005 14:05, sv...@va... wrote: > > > Log: > > > Suppress memory leaks from the linuxthread manager thread. Bug #11100= 6. > > > > > > Modified: > > > trunk/glibc-2.2.supp > > > trunk/glibc-2.3.supp > > > > I'm reading this list for quite some time now, and I was always wonderi= ng > > for why you do supress all those leaks and alikes. > > Various reasons - sometimes because they aren't real bugs and sometimes > just because they are in software (like glibc or X) that everybody uses > and which we don't control. > > > In fact, these must be bugs, too, aren't they? > > They aren't always bugs, sometimes it is just that valgrind isn't clever > enough to work out that they aren't bugs. Many thanks ;) Regards, Christian Parpart. =2D-=20 06:08:47 up 150 days, 19:16, 1 user, load average: 0.00, 0.00, 0.00 |
|
From: Tom H. <th...@cy...> - 2005-08-21 03:46:46
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-08-21 03:00:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 162 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/tls (stdout) |
|
From: Tom H. <to...@co...> - 2005-08-21 02:40:57
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2005-08-21 03:30:04 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 185 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-21 02:27:38
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-08-21 03:15:02 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 184 tests, 15 stderr failures, 2 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/cmpxchg8b (stdout) none/tests/x86/cmpxchg8b (stderr) none/tests/x86/int (stderr) none/tests/x86/yield (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 184 tests, 15 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/cmpxchg8b (stdout) none/tests/x86/cmpxchg8b (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Aug 21 03:21:04 2005 --- new.short Sun Aug 21 03:27:29 2005 *************** *** 8,10 **** ! == 184 tests, 15 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 184 tests, 15 stderr failures, 2 stdout failures ================= memcheck/tests/addressable (stderr) *************** *** 25,26 **** --- 25,27 ---- none/tests/x86/int (stderr) + none/tests/x86/yield (stdout) |
|
From: Tom H. <th...@cy...> - 2005-08-21 02:24:34
|
Nightly build on ginetta ( i686, Red Hat 8.0 ) started at 2005-08-21 03:10:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 184 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-21 02:19:53
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2005-08-21 03:10:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 162 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-21 02:16:56
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2005-08-21 03:05:09 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 162 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: <sv...@va...> - 2005-08-21 00:49:44
|
Author: sewardj
Date: 2005-08-21 01:49:41 +0100 (Sun, 21 Aug 2005)
New Revision: 4474
Log:
Even more ppc32 syscalls.
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/vki_unistd-ppc32-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-08-20 16:26:04 U=
TC (rev 4473)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-08-21 00:49:41 U=
TC (rev 4474)
@@ -2050,7 +2050,7 @@
//..=20
GENX_(__NR_setrlimit, sys_setrlimit), // 75
//.. GENXY(__NR_getrlimit, sys_old_getrlimit), // 76
-//.. GENXY(__NR_getrusage, sys_getrusage), // 77
+ GENXY(__NR_getrusage, sys_getrusage), // 77
GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
//.. GENX_(__NR_settimeofday, sys_settimeofday), // 79
//..=20
@@ -2156,8 +2156,8 @@
//.. // (__NR_sched_rr_get_interval, sys_sched_rr_get_interval), /=
/ 161 */*
GENXY(__NR_nanosleep, sys_nanosleep), // 162
GENX_(__NR_mremap, sys_mremap), // 163
-//.. LINX_(__NR_setresuid, sys_setresuid16), // 164
-//..=20
+ LINX_(__NR_setresuid, sys_setresuid16), // 164
+
LINXY(__NR_getresuid, sys_getresuid16), // 165
=20
//.. GENX_(__NR_query_module, sys_ni_syscall), // 166
Modified: trunk/coregrind/vki_unistd-ppc32-linux.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vki_unistd-ppc32-linux.h 2005-08-20 16:26:04 UTC (rev=
4473)
+++ trunk/coregrind/vki_unistd-ppc32-linux.h 2005-08-21 00:49:41 UTC (rev=
4474)
@@ -106,7 +106,7 @@
//#define __NR_sethostname 74
#define __NR_setrlimit 75
#define __NR_getrlimit 76
-//#define __NR_getrusage 77
+#define __NR_getrusage 77
#define __NR_gettimeofday 78
//#define __NR_settimeofday 79
#define __NR_getgroups 80
@@ -193,7 +193,7 @@
//#define __NR_sched_rr_get_interval 161
#define __NR_nanosleep 162
#define __NR_mremap 163
-//#define __NR_setresuid 164
+#define __NR_setresuid 164
#define __NR_getresuid 165
//#define __NR_query_module 166
#define __NR_poll 167
|
|
From: <sv...@va...> - 2005-08-21 00:48:42
|
Author: sewardj
Date: 2005-08-21 01:48:37 +0100 (Sun, 21 Aug 2005)
New Revision: 1340
Log:
On a PPC32Instr_Call, don't merely record how many integer registers
carry parameters. Instead record the actual identities of such
registers in a bitmask. This is necessary because the PPC calling
conventions have "holes" in the register ranges. For example, a
routine taking an UInt(32-bit) first param and an ULong(64-bit) second
param passes the first arg in r3 but the second one in r5 and r6, and
r4 is not used.
Modified:
trunk/priv/host-ppc32/hdefs.c
trunk/priv/host-ppc32/hdefs.h
trunk/priv/host-ppc32/isel.c
Modified: trunk/priv/host-ppc32/hdefs.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc32/hdefs.c 2005-08-18 11:50:43 UTC (rev 1339)
+++ trunk/priv/host-ppc32/hdefs.c 2005-08-21 00:48:37 UTC (rev 1340)
@@ -706,13 +706,16 @@
return i;
}
PPC32Instr* PPC32Instr_Call ( PPC32CondCode cond,=20
- Addr32 target, Int regparms ) {
+ Addr32 target, UInt argiregs ) {
+ UInt mask;
PPC32Instr* i =3D LibVEX_Alloc(sizeof(PPC32Instr));
i->tag =3D Pin_Call;
i->Pin.Call.cond =3D cond;
i->Pin.Call.target =3D target;
- i->Pin.Call.regparms =3D regparms;
- vassert(regparms >=3D 0 && regparms < PPC32_N_REGPARMS);
+ i->Pin.Call.argiregs =3D argiregs;
+ /* Only r3 .. r10 inclusive may be used as arg regs. Hence: */
+ mask =3D (1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)|(1<<10);
+ vassert(0 =3D=3D (argiregs & ~mask));
return i;
}
PPC32Instr* PPC32Instr_Goto ( IRJumpKind jk,=20
@@ -1054,15 +1057,25 @@
vex_printf(",");
ppHRegPPC32(i->Pin.Div.srcR);
return;
- case Pin_Call:
+ case Pin_Call: {
+ Int n;
vex_printf("call: ");
if (i->Pin.Call.cond.test !=3D Pct_ALWAYS) {
vex_printf("if (%s) ", showPPC32CondCode(i->Pin.Call.cond));
}
vex_printf("{ ");
ppLoadImm(hregPPC32_GPR12(), i->Pin.Call.target);
- vex_printf(" ; mtctr r12 ; bctrl [regparms=3D%d] }",i->Pin.Call.re=
gparms);
+ vex_printf(" ; mtctr r12 ; bctrl [");
+ for (n =3D 0; n < 32; n++) {
+ if (i->Pin.Call.argiregs & (1<<n)) {
+ vex_printf("r%d", n);
+ if ((i->Pin.Call.argiregs >> n) > 1)
+ vex_printf(",");
+ }
+ }
+ vex_printf("] }");
break;
+ }
case Pin_Goto:
vex_printf("goto: ");
if (i->Pin.Goto.cond.test !=3D Pct_ALWAYS) {
@@ -1438,19 +1451,20 @@
addHRegUse(u, HRmWrite, hregPPC32_GPR12());
=20
/* Now we have to state any parameter-carrying registers
- which might be read. This depends on the regparmness. */
- switch (i->Pin.Call.regparms) {
- case 8: addHRegUse(u, HRmRead, hregPPC32_GPR10()); /*fallthru*/
- case 7: addHRegUse(u, HRmRead, hregPPC32_GPR9() ); /*fallthru*/
- case 6: addHRegUse(u, HRmRead, hregPPC32_GPR8() ); /*fallthru*/
- case 5: addHRegUse(u, HRmRead, hregPPC32_GPR7() ); /*fallthru*/
- case 4: addHRegUse(u, HRmRead, hregPPC32_GPR6() ); /*fallthru*/
- case 3: addHRegUse(u, HRmRead, hregPPC32_GPR5() ); /*fallthru*/
- case 2: addHRegUse(u, HRmRead, hregPPC32_GPR4() ); /*fallthru*/
- case 1: addHRegUse(u, HRmRead, hregPPC32_GPR3() ); /*fallthru*/
- case 0: break;
- default: vpanic("getRegUsage_PPC32Instr:Call:regparms");
- }
+ which might be read. This depends on the argiregs field. */
+ if (i->Pin.Call.argiregs & (1<<10)) addHRegUse(u, HRmRead, hregPPC=
32_GPR10());
+ if (i->Pin.Call.argiregs & (1<<9)) addHRegUse(u, HRmRead, hregPPC3=
2_GPR9());
+ if (i->Pin.Call.argiregs & (1<<8)) addHRegUse(u, HRmRead, hregPPC3=
2_GPR8());
+ if (i->Pin.Call.argiregs & (1<<7)) addHRegUse(u, HRmRead, hregPPC3=
2_GPR7());
+ if (i->Pin.Call.argiregs & (1<<6)) addHRegUse(u, HRmRead, hregPPC3=
2_GPR6());
+ if (i->Pin.Call.argiregs & (1<<5)) addHRegUse(u, HRmRead, hregPPC3=
2_GPR5());
+ if (i->Pin.Call.argiregs & (1<<4)) addHRegUse(u, HRmRead, hregPPC3=
2_GPR4());
+ if (i->Pin.Call.argiregs & (1<<3)) addHRegUse(u, HRmRead, hregPPC3=
2_GPR3());
+
+ vassert(0 =3D=3D (i->Pin.Call.argiregs
+ & ~((1<<3)|(1<<4)|(1<<5)|(1<<6)
+ |(1<<7)|(1<<8)|(1<<9)|(1<<10))));
+
/* Finally, there is the issue that the insn trashes a
register because the literal target address has to be
loaded into a register. %r12 seems a suitable victim.
Modified: trunk/priv/host-ppc32/hdefs.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc32/hdefs.h 2005-08-18 11:50:43 UTC (rev 1339)
+++ trunk/priv/host-ppc32/hdefs.h 2005-08-21 00:48:37 UTC (rev 1340)
@@ -494,11 +494,14 @@
HReg srcR;
} Div;
/* Pseudo-insn. Call target (an absolute address), on given
- condition (which could be Pct_ALWAYS). */
+ condition (which could be Pct_ALWAYS). argiregs indicates
+ which of r3 .. r10 carries argument values for this call,
+ using a bit mask (1<<N is set if rN holds an arg, for N in
+ 3 .. 10 inclusive). */
struct {
PPC32CondCode cond;
Addr32 target;
- Int regparms; /* 0 .. 9 */
+ UInt argiregs;
} Call;
/* Pseudo-insn. Goto dst, on given condition (which could be
Pct_ALWAYS). */
@@ -685,7 +688,7 @@
extern PPC32Instr* PPC32Instr_Unary32 ( PPC32UnaryOp op, HReg dst, HR=
eg src );
extern PPC32Instr* PPC32Instr_MulL ( Bool syned, Bool hi32, HReg, =
HReg, HReg );
extern PPC32Instr* PPC32Instr_Div ( Bool syned, HReg dst, HReg sr=
cL, HReg srcR );
-extern PPC32Instr* PPC32Instr_Call ( PPC32CondCode, Addr32, Int );
+extern PPC32Instr* PPC32Instr_Call ( PPC32CondCode, Addr32, UInt )=
;
extern PPC32Instr* PPC32Instr_Goto ( IRJumpKind, PPC32CondCode con=
d, PPC32RI* dst );
extern PPC32Instr* PPC32Instr_CMov32 ( PPC32CondCode, HReg dst, PPC3=
2RI* src );
extern PPC32Instr* PPC32Instr_Load ( UChar sz, Bool syned,
Modified: trunk/priv/host-ppc32/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc32/isel.c 2005-08-18 11:50:43 UTC (rev 1339)
+++ trunk/priv/host-ppc32/isel.c 2005-08-21 00:48:37 UTC (rev 1340)
@@ -411,6 +411,7 @@
HReg tmpregs[PPC32_N_REGPARMS];
Bool go_fast;
Int n_args, i, argreg;
+ UInt argiregs;
=20
/* Marshal args for a call and do the call.
=20
@@ -479,6 +480,7 @@
argregs[5] =3D hregPPC32_GPR8();
argregs[6] =3D hregPPC32_GPR9();
argregs[7] =3D hregPPC32_GPR10();
+ argiregs =3D 0;
=20
tmpregs[0] =3D tmpregs[1] =3D tmpregs[2] =3D
tmpregs[3] =3D tmpregs[4] =3D tmpregs[5] =3D
@@ -518,6 +520,7 @@
/* FAST SCHEME */
argreg =3D 0;
if (passBBP) {
+ argiregs |=3D (1 << (argreg+3));
addInstr(env, mk_iMOVds_RR( argregs[argreg], GuestStatePtr ));
argreg++;
}
@@ -527,6 +530,7 @@
vassert(typeOfIRExpr(env->type_env, args[i]) =3D=3D Ity_I32 ||
typeOfIRExpr(env->type_env, args[i]) =3D=3D Ity_I64);
if (typeOfIRExpr(env->type_env, args[i]) =3D=3D Ity_I32) {=20
+ argiregs |=3D (1 << (argreg+3));
addInstr(env, mk_iMOVds_RR( argregs[argreg],
iselIntExpr_R(env, args[i]) ));
} else { // Ity_I64
@@ -535,7 +539,9 @@
argreg++; // XXX: odd argreg =3D> even rN
vassert(argreg < PPC32_N_REGPARMS-1);
iselInt64Expr(&rHi,&rLo, env, args[i]);
+ argiregs |=3D (1 << (argreg+3));
addInstr(env, mk_iMOVds_RR( argregs[argreg++], rHi ));
+ argiregs |=3D (1 << (argreg+3));
addInstr(env, mk_iMOVds_RR( argregs[argreg], rLo));
}
argreg++;
@@ -596,6 +602,7 @@
continue;
/* None of these insns, including any spill code that might
be generated, may alter the condition codes. */
+ argiregs |=3D (1 << (i+3));
addInstr( env, mk_iMOVds_RR( argregs[i], tmpregs[i] ) );
}
=20
@@ -604,7 +611,7 @@
/* Finally, the call itself. */
addInstr(env, PPC32Instr_Call( cc,
(Addr32)toUInt(Ptr_to_ULong(cee->addr)=
),
- n_args + (passBBP ? 1 : 0) ));
+ argiregs ));
}
=20
=20
|