This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/82677] Many projects (linux, coreutils, GMP, gcrypt, openSSL, etc) are misusing asm(divq/divl) etc, potentially resulting in faulty/unintended optimisations


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82677

--- Comment #5 from infinity0 at pwned dot gg ---
(In reply to Richard Biener from comment #4)
> [..]
> It's still safe to move the asm in
> 
> int main() {
>   ulong d = 0;
>   for (ulong i = 0; i < 3; i++)
>     for (ulong j = 0; j < 3; j++)
>         {
>           ulong r;
>           __asm__("" : "=r"(d) : "rm"((ulong)0));
>           udiv_qrnnd(q, r, 0, 0, (i << d));
>         }
> }
> 
> thus without the if ().

For the specific case of asm(div) I suppose it's safe because raising a DE is
pretty much similar to raising it several times in a loop, but it is correct to
assume that for all types of side effects?

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]