Re: [PATCH] [ARC] PR 88409: miscompilation due to missing cc clobber in longlong.h macros

2019-04-09 Thread Claudiu Zissulescu
Done.

On Wed, Apr 3, 2019 at 8:28 PM Vineet Gupta  wrote:
>
> On 4/3/19 2:53 AM, Claudiu Zissulescu wrote:
> > Pushed, thank you for your contribution,
> > Claudiu
>
> Thx, can this be backported to gcc-8-stable please which is what glibc folks 
> use
> for testing !
>
> -Vineet
>
> >
> > On Tue, Apr 2, 2019 at 9:27 PM Vineet Gupta  
> > wrote:
> >> simple test such as below was failing.
> >>
> >> | void main(int argc, char *argv[])
> >> | {
> >> |size_t total_time = 115424;   // expected 115.424
> >> |double secs = (double)total_time/(double)1000;
> >> |printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
> >> |printf("%d\n", (size_t)secs);
> >> | }
> >>
> >> The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
> >> which uses the __arc__ specific inline asm macros from longlong.h which
> >> were causing miscompilation.
> >>
> >> include/
> >> 2019-03-28  Vineet Gupta 
> >>
> >> PR 89877
> >>
> >> * longlong.h [__arc__] (add_ss): Add cc clobber
> >> (sub_ddmmss): Likewise.
> >>
> >> Signed-off-by: Vineet Gupta 
> >> ---
> >>  include/ChangeLog  | 7 +++
> >>  include/longlong.h | 6 --
> >>  2 files changed, 11 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/include/ChangeLog b/include/ChangeLog
> >> index be08141deeb9..96d967d10a52 100644
> >> --- a/include/ChangeLog
> >> +++ b/include/ChangeLog
> >> @@ -1,3 +1,10 @@
> >> +2019-03-28  Vineet Gupta 
> >> +
> >> +   PR 89877
> >> +
> >> +   * longlong.h [__arc__] (add_ss): Add cc clobber
> >> +   (sub_ddmmss): Likewise.
> >> +
> >>  2019-02-11  Philippe Waroquiers  
> >>
> >> * splay-tree.h (splay_tree_delete_key_fn): Update comment.
> >> diff --git a/include/longlong.h b/include/longlong.h
> >> index 3dd8dc3aa80c..1f0ce4204255 100644
> >> --- a/include/longlong.h
> >> +++ b/include/longlong.h
> >> @@ -199,7 +199,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, 
> >> UDItype, UDItype);
> >>: "%r" ((USItype) (ah)), \
> >>  "rICal" ((USItype) (bh)),  \
> >>  "%r" ((USItype) (al)), \
> >> -"rICal" ((USItype) (bl)))
> >> +"rICal" ((USItype) (bl))   \
> >> +  : "cc")
> >>  #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
> >>__asm__ ("sub.f  %1, %4, %5\n\tsbc   %0, %2, %3" \
> >>: "=r" ((USItype) (sh)), \
> >> @@ -207,7 +208,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, 
> >> UDItype, UDItype);
> >>: "r" ((USItype) (ah)),  \
> >>  "rICal" ((USItype) (bh)),  \
> >>  "r" ((USItype) (al)),  \
> >> -"rICal" ((USItype) (bl)))
> >> +"rICal" ((USItype) (bl))   \
> >> +  : "cc")
> >>
> >>  #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
> >>  #ifdef __ARC_NORM__
> >> --
> >> 2.7.4
> >>
>


Re: [PATCH] [ARC] PR 88409: miscompilation due to missing cc clobber in longlong.h macros

2019-04-03 Thread Vineet Gupta
On 4/3/19 2:53 AM, Claudiu Zissulescu wrote:
> Pushed, thank you for your contribution,
> Claudiu

Thx, can this be backported to gcc-8-stable please which is what glibc folks use
for testing !

-Vineet

>
> On Tue, Apr 2, 2019 at 9:27 PM Vineet Gupta  
> wrote:
>> simple test such as below was failing.
>>
>> | void main(int argc, char *argv[])
>> | {
>> |size_t total_time = 115424;   // expected 115.424
>> |double secs = (double)total_time/(double)1000;
>> |printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
>> |printf("%d\n", (size_t)secs);
>> | }
>>
>> The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
>> which uses the __arc__ specific inline asm macros from longlong.h which
>> were causing miscompilation.
>>
>> include/
>> 2019-03-28  Vineet Gupta 
>>
>> PR 89877
>>
>> * longlong.h [__arc__] (add_ss): Add cc clobber
>> (sub_ddmmss): Likewise.
>>
>> Signed-off-by: Vineet Gupta 
>> ---
>>  include/ChangeLog  | 7 +++
>>  include/longlong.h | 6 --
>>  2 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/ChangeLog b/include/ChangeLog
>> index be08141deeb9..96d967d10a52 100644
>> --- a/include/ChangeLog
>> +++ b/include/ChangeLog
>> @@ -1,3 +1,10 @@
>> +2019-03-28  Vineet Gupta 
>> +
>> +   PR 89877
>> +
>> +   * longlong.h [__arc__] (add_ss): Add cc clobber
>> +   (sub_ddmmss): Likewise.
>> +
>>  2019-02-11  Philippe Waroquiers  
>>
>> * splay-tree.h (splay_tree_delete_key_fn): Update comment.
>> diff --git a/include/longlong.h b/include/longlong.h
>> index 3dd8dc3aa80c..1f0ce4204255 100644
>> --- a/include/longlong.h
>> +++ b/include/longlong.h
>> @@ -199,7 +199,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, 
>> UDItype, UDItype);
>>: "%r" ((USItype) (ah)), \
>>  "rICal" ((USItype) (bh)),  \
>>  "%r" ((USItype) (al)), \
>> -"rICal" ((USItype) (bl)))
>> +"rICal" ((USItype) (bl))   \
>> +  : "cc")
>>  #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
>>__asm__ ("sub.f  %1, %4, %5\n\tsbc   %0, %2, %3" \
>>: "=r" ((USItype) (sh)), \
>> @@ -207,7 +208,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, 
>> UDItype, UDItype);
>>: "r" ((USItype) (ah)),  \
>>  "rICal" ((USItype) (bh)),  \
>>  "r" ((USItype) (al)),  \
>> -"rICal" ((USItype) (bl)))
>> +"rICal" ((USItype) (bl))   \
>> +  : "cc")
>>
>>  #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
>>  #ifdef __ARC_NORM__
>> --
>> 2.7.4
>>



Re: [PATCH] [ARC] PR 88409: miscompilation due to missing cc clobber in longlong.h macros

2019-04-03 Thread Claudiu Zissulescu
Pushed, thank you for your contribution,
Claudiu

On Tue, Apr 2, 2019 at 9:27 PM Vineet Gupta  wrote:
>
> simple test such as below was failing.
>
> | void main(int argc, char *argv[])
> | {
> |size_t total_time = 115424;   // expected 115.424
> |double secs = (double)total_time/(double)1000;
> |printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
> |printf("%d\n", (size_t)secs);
> | }
>
> The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
> which uses the __arc__ specific inline asm macros from longlong.h which
> were causing miscompilation.
>
> include/
> 2019-03-28  Vineet Gupta 
>
> PR 89877
>
> * longlong.h [__arc__] (add_ss): Add cc clobber
> (sub_ddmmss): Likewise.
>
> Signed-off-by: Vineet Gupta 
> ---
>  include/ChangeLog  | 7 +++
>  include/longlong.h | 6 --
>  2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/include/ChangeLog b/include/ChangeLog
> index be08141deeb9..96d967d10a52 100644
> --- a/include/ChangeLog
> +++ b/include/ChangeLog
> @@ -1,3 +1,10 @@
> +2019-03-28  Vineet Gupta 
> +
> +   PR 89877
> +
> +   * longlong.h [__arc__] (add_ss): Add cc clobber
> +   (sub_ddmmss): Likewise.
> +
>  2019-02-11  Philippe Waroquiers  
>
> * splay-tree.h (splay_tree_delete_key_fn): Update comment.
> diff --git a/include/longlong.h b/include/longlong.h
> index 3dd8dc3aa80c..1f0ce4204255 100644
> --- a/include/longlong.h
> +++ b/include/longlong.h
> @@ -199,7 +199,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, 
> UDItype);
>: "%r" ((USItype) (ah)), \
>  "rICal" ((USItype) (bh)),  \
>  "%r" ((USItype) (al)), \
> -"rICal" ((USItype) (bl)))
> +"rICal" ((USItype) (bl))   \
> +  : "cc")
>  #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
>__asm__ ("sub.f  %1, %4, %5\n\tsbc   %0, %2, %3" \
>: "=r" ((USItype) (sh)), \
> @@ -207,7 +208,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, 
> UDItype);
>: "r" ((USItype) (ah)),  \
>  "rICal" ((USItype) (bh)),  \
>  "r" ((USItype) (al)),  \
> -"rICal" ((USItype) (bl)))
> +"rICal" ((USItype) (bl))   \
> +  : "cc")
>
>  #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
>  #ifdef __ARC_NORM__
> --
> 2.7.4
>


[PATCH] [ARC] PR 88409: miscompilation due to missing cc clobber in longlong.h macros

2019-04-02 Thread Vineet Gupta
simple test such as below was failing.

| void main(int argc, char *argv[])
| {
|size_t total_time = 115424;   // expected 115.424
|double secs = (double)total_time/(double)1000;
|printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
|printf("%d\n", (size_t)secs);
| }

The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
which uses the __arc__ specific inline asm macros from longlong.h which
were causing miscompilation.

include/
2019-03-28  Vineet Gupta 

PR 89877

* longlong.h [__arc__] (add_ss): Add cc clobber
(sub_ddmmss): Likewise.

Signed-off-by: Vineet Gupta 
---
 include/ChangeLog  | 7 +++
 include/longlong.h | 6 --
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/include/ChangeLog b/include/ChangeLog
index be08141deeb9..96d967d10a52 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,10 @@
+2019-03-28  Vineet Gupta 
+
+   PR 89877
+
+   * longlong.h [__arc__] (add_ss): Add cc clobber
+   (sub_ddmmss): Likewise.
+
 2019-02-11  Philippe Waroquiers  
 
* splay-tree.h (splay_tree_delete_key_fn): Update comment.
diff --git a/include/longlong.h b/include/longlong.h
index 3dd8dc3aa80c..1f0ce4204255 100644
--- a/include/longlong.h
+++ b/include/longlong.h
@@ -199,7 +199,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, 
UDItype);
   : "%r" ((USItype) (ah)), \
 "rICal" ((USItype) (bh)),  \
 "%r" ((USItype) (al)), \
-"rICal" ((USItype) (bl)))
+"rICal" ((USItype) (bl))   \
+  : "cc")
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   __asm__ ("sub.f  %1, %4, %5\n\tsbc   %0, %2, %3" \
   : "=r" ((USItype) (sh)), \
@@ -207,7 +208,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, 
UDItype);
   : "r" ((USItype) (ah)),  \
 "rICal" ((USItype) (bh)),  \
 "r" ((USItype) (al)),  \
-"rICal" ((USItype) (bl)))
+"rICal" ((USItype) (bl))   \
+  : "cc")
 
 #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
 #ifdef __ARC_NORM__
-- 
2.7.4



Re: [PATCH] [ARC] PR 88409: miscompilation due to missing cc clobber in longlong.h macros

2019-03-28 Thread Vineet Gupta
On 3/28/19 5:07 PM, Marc Glisse wrote:
> On Thu, 28 Mar 2019, Vineet Gupta wrote:
>
>> simple test such as below was failing.
>>
>> | void main(int argc, char *argv[])
>> | {
>> |size_t total_time = 115424;   // expected 115.424
>> |double secs = (double)total_time/(double)1000;
>> |printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
>> |printf("%d\n", (size_t)secs);
>> | }
>>
>> The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
>> which uses the __arc__ specific inline asm macros from longlong.h which
>> were causing miscompilation.
> Hello,
>
> do you intend to post similar patches for glibc and gmp, which both have a 
> similar longlong.h?

Yeah, glibc typically "syncs" longlong.h from gcc so once gcc patch is merged,
I'll post a sync patch to glibc.
Good tip about gmp, I wasn't aware of that. I suppose I could post there too 
once
dust settles on gcc side.

Thx,
-Vinet


Re: [PATCH] [ARC] PR 88409: miscompilation due to missing cc clobber in longlong.h macros

2019-03-28 Thread Marc Glisse

On Thu, 28 Mar 2019, Vineet Gupta wrote:


simple test such as below was failing.

| void main(int argc, char *argv[])
| {
|size_t total_time = 115424;   // expected 115.424
|double secs = (double)total_time/(double)1000;
|printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
|printf("%d\n", (size_t)secs);
| }

The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
which uses the __arc__ specific inline asm macros from longlong.h which
were causing miscompilation.


Hello,

do you intend to post similar patches for glibc and gmp, which both have a 
similar longlong.h?


--
Marc Glisse


[PATCH] [ARC] PR 88409: miscompilation due to missing cc clobber in longlong.h macros

2019-03-28 Thread Vineet Gupta
simple test such as below was failing.

| void main(int argc, char *argv[])
| {
|size_t total_time = 115424;   // expected 115.424
|double secs = (double)total_time/(double)1000;
|printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
|printf("%d\n", (size_t)secs);
| }

The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
which uses the __arc__ specific inline asm macros from longlong.h which
were causing miscompilation.

include/
2019-03-28  Vineet Gupta 

PR 89877

* longlong.h [__arc__] (add_ss): Add cc clobber
(sub_ddmmss): Likewise.

Signed-off-by: Vineet Gupta 
---
 include/ChangeLog  | 7 +++
 include/longlong.h | 6 --
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/include/ChangeLog b/include/ChangeLog
index be08141deeb9..96d967d10a52 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,10 @@
+2019-03-28  Vineet Gupta 
+
+   PR 89877
+
+   * longlong.h [__arc__] (add_ss): Add cc clobber
+   (sub_ddmmss): Likewise.
+
 2019-02-11  Philippe Waroquiers  
 
* splay-tree.h (splay_tree_delete_key_fn): Update comment.
diff --git a/include/longlong.h b/include/longlong.h
index 3dd8dc3aa80c..1f0ce4204255 100644
--- a/include/longlong.h
+++ b/include/longlong.h
@@ -199,7 +199,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, 
UDItype);
   : "%r" ((USItype) (ah)), \
 "rICal" ((USItype) (bh)),  \
 "%r" ((USItype) (al)), \
-"rICal" ((USItype) (bl)))
+"rICal" ((USItype) (bl))   \
+  : "cc")
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   __asm__ ("sub.f  %1, %4, %5\n\tsbc   %0, %2, %3" \
   : "=r" ((USItype) (sh)), \
@@ -207,7 +208,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, 
UDItype);
   : "r" ((USItype) (ah)),  \
 "rICal" ((USItype) (bh)),  \
 "r" ((USItype) (al)),  \
-"rICal" ((USItype) (bl)))
+"rICal" ((USItype) (bl))   \
+  : "cc")
 
 #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
 #ifdef __ARC_NORM__
-- 
2.7.4