Re: qsort.c: remove useless variable

2017-01-03 Thread Alexander Bluhm
On Tue, Jan 03, 2017 at 04:40:47PM -0700, Todd C. Miller wrote:
> On Tue, 03 Jan 2017 21:51:12 +0100, Alexander Bluhm wrote:
> 
> > I think it would be nicer to keep the char * a variable and remove
> > the (char *) casts instead.
> 
> How about this?

The qsort.o does not change.  OK bluhm@

> 
>  - todd
> 
> Index: lib/libc/stdlib/qsort.c
> ===
> RCS file: /cvs/src/lib/libc/stdlib/qsort.c,v
> retrieving revision 1.13
> diff -u -p -u -r1.13 qsort.c
> --- lib/libc/stdlib/qsort.c   13 Sep 2015 08:31:47 -  1.13
> +++ lib/libc/stdlib/qsort.c   3 Jan 2017 23:39:24 -
> @@ -90,16 +90,16 @@ qsort(void *aa, size_t n, size_t es, int
>  
>  loop:SWAPINIT(a, es);
>   if (n < 7) {
> - for (pm = (char *)a + es; pm < (char *) a + n * es; pm += es)
> - for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
> + for (pm = a + es; pm < a + n * es; pm += es)
> + for (pl = pm; pl > a && cmp(pl - es, pl) > 0;
>pl -= es)
>   swap(pl, pl - es);
>   return;
>   }
> - pm = (char *)a + (n / 2) * es;
> + pm = a + (n / 2) * es;
>   if (n > 7) {
> - pl = (char *)a;
> - pn = (char *)a + (n - 1) * es;
> + pl = a;
> + pn = a + (n - 1) * es;
>   if (n > 40) {
>   d = (n / 8) * es;
>   pl = med3(pl, pl + d, pl + 2 * d, cmp);
> @@ -109,9 +109,9 @@ loop: SWAPINIT(a, es);
>   pm = med3(pl, pm, pn, cmp);
>   }
>   swap(a, pm);
> - pa = pb = (char *)a + es;
> + pa = pb = a + es;
>  
> - pc = pd = (char *)a + (n - 1) * es;
> + pc = pd = a + (n - 1) * es;
>   for (;;) {
>   while (pb <= pc && (cmp_result = cmp(pb, a)) <= 0) {
>   if (cmp_result == 0) {
> @@ -134,8 +134,8 @@ loop: SWAPINIT(a, es);
>   pc -= es;
>   }
>  
> - pn = (char *)a + n * es;
> - r = min(pa - (char *)a, pb - pa);
> + pn = a + n * es;
> + r = min(pa - a, pb - pa);
>   vecswap(a, pb - r, r);
>   r = min(pd - pc, pn - pd - es);
>   vecswap(pb, pn - r, r);



Re: qsort.c: remove useless variable

2017-01-03 Thread Todd C. Miller
On Tue, 03 Jan 2017 21:51:12 +0100, Alexander Bluhm wrote:

> I think it would be nicer to keep the char * a variable and remove
> the (char *) casts instead.

How about this?

 - todd

Index: lib/libc/stdlib/qsort.c
===
RCS file: /cvs/src/lib/libc/stdlib/qsort.c,v
retrieving revision 1.13
diff -u -p -u -r1.13 qsort.c
--- lib/libc/stdlib/qsort.c 13 Sep 2015 08:31:47 -  1.13
+++ lib/libc/stdlib/qsort.c 3 Jan 2017 23:39:24 -
@@ -90,16 +90,16 @@ qsort(void *aa, size_t n, size_t es, int
 
 loop:  SWAPINIT(a, es);
if (n < 7) {
-   for (pm = (char *)a + es; pm < (char *) a + n * es; pm += es)
-   for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
+   for (pm = a + es; pm < a + n * es; pm += es)
+   for (pl = pm; pl > a && cmp(pl - es, pl) > 0;
 pl -= es)
swap(pl, pl - es);
return;
}
-   pm = (char *)a + (n / 2) * es;
+   pm = a + (n / 2) * es;
if (n > 7) {
-   pl = (char *)a;
-   pn = (char *)a + (n - 1) * es;
+   pl = a;
+   pn = a + (n - 1) * es;
if (n > 40) {
d = (n / 8) * es;
pl = med3(pl, pl + d, pl + 2 * d, cmp);
@@ -109,9 +109,9 @@ loop:   SWAPINIT(a, es);
pm = med3(pl, pm, pn, cmp);
}
swap(a, pm);
-   pa = pb = (char *)a + es;
+   pa = pb = a + es;
 
-   pc = pd = (char *)a + (n - 1) * es;
+   pc = pd = a + (n - 1) * es;
for (;;) {
while (pb <= pc && (cmp_result = cmp(pb, a)) <= 0) {
if (cmp_result == 0) {
@@ -134,8 +134,8 @@ loop:   SWAPINIT(a, es);
pc -= es;
}
 
-   pn = (char *)a + n * es;
-   r = min(pa - (char *)a, pb - pa);
+   pn = a + n * es;
+   r = min(pa - a, pb - pa);
vecswap(a, pb - r, r);
r = min(pd - pc, pn - pd - es);
vecswap(pb, pn - r, r);



Re: qsort.c: remove useless variable

2017-01-03 Thread Alexander Bluhm
On Tue, Jan 03, 2017 at 12:57:59PM -0700, Todd C. Miller wrote:
> When qsort.c was de-registered, the register version of 'aa' was
> not removed.  Since qsort() already contains casts of a to char *
> there's no need for a separate variable here.

I think it would be nicer to keep the char * a variable and remove
the (char *) casts instead.

bluhm

> 
>  - todd
> 
> Index: lib/libc/stdlib/qsort.c
> ===
> RCS file: /cvs/src/lib/libc/stdlib/qsort.c,v
> retrieving revision 1.13
> diff -u -p -u -r1.13 qsort.c
> --- lib/libc/stdlib/qsort.c   13 Sep 2015 08:31:47 -  1.13
> +++ lib/libc/stdlib/qsort.c   3 Jan 2017 14:29:03 -
> @@ -81,12 +81,11 @@ med3(char *a, char *b, char *c, int (*cm
>  }
>  
>  void
> -qsort(void *aa, size_t n, size_t es, int (*cmp)(const void *, const void *))
> +qsort(void *a, size_t n, size_t es, int (*cmp)(const void *, const void *))
>  {
>   char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
>   int cmp_result, swaptype;
>   size_t d, r;
> - char *a = aa;
>  
>  loop:SWAPINIT(a, es);
>   if (n < 7) {



qsort.c: remove useless variable

2017-01-03 Thread Todd C. Miller
When qsort.c was de-registered, the register version of 'aa' was
not removed.  Since qsort() already contains casts of a to char *
there's no need for a separate variable here.

 - todd

Index: lib/libc/stdlib/qsort.c
===
RCS file: /cvs/src/lib/libc/stdlib/qsort.c,v
retrieving revision 1.13
diff -u -p -u -r1.13 qsort.c
--- lib/libc/stdlib/qsort.c 13 Sep 2015 08:31:47 -  1.13
+++ lib/libc/stdlib/qsort.c 3 Jan 2017 14:29:03 -
@@ -81,12 +81,11 @@ med3(char *a, char *b, char *c, int (*cm
 }
 
 void
-qsort(void *aa, size_t n, size_t es, int (*cmp)(const void *, const void *))
+qsort(void *a, size_t n, size_t es, int (*cmp)(const void *, const void *))
 {
char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
int cmp_result, swaptype;
size_t d, r;
-   char *a = aa;
 
 loop:  SWAPINIT(a, es);
if (n < 7) {