[llvm-bugs] [Bug 38321] New: The line number of YAML optimization record file is wrong if using #line directive.

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jul 25 19:37:47 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=38321

            Bug ID: 38321
           Summary: The line number of YAML optimization record file is
                    wrong if using #line directive.
           Product: clang
           Version: unspecified
          Hardware: Other
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: ueno.masakazu at jp.fujitsu.com
                CC: llvm-bugs at lists.llvm.org

* version of clang
$ clang -v
clang version 6.0.0 (tags/RELEASE_600/final)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/local/llvm-6.0.0/install/bin
Found candidate GCC installation: /usr/lib/gcc/aarch64-redhat-linux/4.8.2
Found candidate GCC installation: /usr/lib/gcc/aarch64-redhat-linux/4.8.5
Selected GCC installation: /usr/lib/gcc/aarch64-redhat-linux/4.8.5
Candidate multilib: .;@m64
Selected multilib: .;@m64

* example

[Using #line directive]
 $ clang -O3 -fsave-optimization-record line_on.c
 $ llvm-opt-report line_on.opt.yaml
< line_on.c
 1       | #include <stdio.h>
 2       |
 3  V2,2 | double a[10000],b[10000];
 4       | void sub(int n)
 5       | {
 6       |   int i;
 7       |   for(i=0;i<n;i++)
 8       |    {
 9 I     |       a[i]=b[i];
10       |    }
11       | }
12       |
13       | int main()
14       | {
15       |   int i;
16       | # 3
17       |   for(i=0;i<10000;i++)
18       |    {
19       |       b[i]=5;
20       |    }
21       |   for(i=0;i<100000;i++)
22       |    {
23       |     sub(10000);
24       |    }
25       |   printf("%f\n",a[10]);
26       |   return 0;
27       | }
28       |

[NOT using #line directive => No problem]
 $ clang -O3 -fsave-optimization-record line_off.c
 $ llvm-opt-report line_off.opt.yaml
< line_off.c
 1       | #include <stdio.h>
 2       |
 3       | double a[10000],b[10000];
 4       | void sub(int n)
 5       | {
 6       |   int i;
 7       |   for(i=0;i<n;i++)
 8       |    {
 9       |       a[i]=b[i];
10       |    }
11       | }
12       |
13       | int main()
14       | {
15       |   int i;
16  V2,2 |   for(i=0;i<10000;i++)
17       |    {
18       |       b[i]=5;
19       |    }
20       |   for(i=0;i<100000;i++)
21       |    {
22 I     |     sub(10000);
23       |    }
24       |   printf("%f\n",a[10]);
25       |   return 0;
26       | }
27       |

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180726/6c69b790/attachment.html>


More information about the llvm-bugs mailing list