[cfe-dev] one bit error
Alexey Sidorin via cfe-dev
cfe-dev at lists.llvm.org
Fri Jan 20 21:29:03 PST 2017
If you take a look at the generated code, you will see that clang uses
cmp dword ptr [rbp - 12], 4000
jge .LBB0_8
which is equal (in C) to
if (i >= 4000)
while gcc generates
cmp DWORD PTR [rbp-8], 3999
jg .L2
which is equal to
if (i > 3999)
I don't see any difference here. Why do you think this is an issue?
21.01.2017 07:46, Ashish Gahlot via cfe-dev пишет:
> This is my first try on mailing list. Please correct if I am wrong.
> On compiling this program using clang 3.9.1
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main () {
> int i,j;
> static int x[4000][4000];
> for (j = 0; j < 4000; j++) {
> for (i = 0; i < 4000; i++) {
> x[j][i] = i + j; }
> }
> }
> got compiled to
>
> mov dword ptr [rbp - 4], 0
> mov dword ptr [rbp - 12], 0
> .LBB0_1: # =>This Loop Header: Depth=1
> cmp dword ptr [rbp - 12], 4000
> jge .LBB0_8
> mov dword ptr [rbp - 8], 0
> .LBB0_3: # Parent Loop BB0_1 Depth=1
> cmp dword ptr [rbp - 8], 4000
>
> while gcc 7 gives this
>
> mov DWORD PTR [rbp-8], 0
> .L5:
> cmp DWORD PTR [rbp-8], 3999
> jg .L2
> mov DWORD PTR [rbp-4], 0
> .L4:
> cmp DWORD PTR [rbp-4], 3999
> jg .L3
>
> I think it should be 3999.
>
> --
> Ashish Kumar Gahlot
> III year, UG
> Govt. Engg. College, Ajmer, India
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170121/f68e4b60/attachment.html>
More information about the cfe-dev
mailing list