| LLVM-OPT-REPORT(1) | LLVM | LLVM-OPT-REPORT(1) |
نام (NAME)
llvm-opt-report - تولید گزارش بهینهسازی از طریق YAML
خلاصه دستور (SYNOPSIS)
llvm-opt-report [گزینهها] [input]
توضیحات (DESCRIPTION)
ابزار llvm-opt-report برای تولید گزارش بهینهسازی از فایلهای رکورد بهینهسازی YAML به کار میرود.
پیش از اجرای llvm-opt-report، باید یک فایل ورودی رکورد بهینهسازی YAML ایجاد کنید.
این ابزار اطلاعاتی درباره زمان اجرا، مصرف حافظه و سایر جزئیات هر مرحله بهینهسازی (optimization pass) ارائه میدهد.
$ clang -c foo.c -o foo.o -O3 -fsave-optimization-record
سپس، با استفاده از دستور llvm-opt-report و مشخص کردن فایل رکورد بهینهسازی YAML یعنی foo.opt.yaml بهعنوان ورودی، گزارش را ایجاد میکنید.
$ llvm-opt-report foo.opt.yaml -o foo.lst
فایل foo.lst همان گزارش بهینهسازی تولیدشده است.
< foo.c
1 | void bar();
2 | void foo() { bar(); }
3 |
4 | void Test(int *res, int *c, int *d, int *p, int n) {
5 | int i;
6 |
7 | #pragma clang loop vectorize(assume_safety)
8 V4,1 | for (i = 0; i < 1600; i++) {
9 | res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
10 | }
11 |
12 U16 | for (i = 0; i < 16; i++) {
13 | res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
14 | }
15 |
16 I | foo();
17 |
18 | foo(); bar(); foo();
I | ^
I | ^
19 | }
20 |
نمادهایی که در سمت چپ برنامه چاپ میشوند، نوع بهینهسازی انجامشده را مشخص میکنند. معانی این نمادها به شرح زیر است:
- I: تابع درونخطی (inlined) شده است.
- U: حلقه باز شده است (unrolled). عدد پس از آن ضریب باز شدن حلقه (unroll factor) را نشان میدهد.
- V: حلقه برداریسازی شده است (vectorized). اعداد پس از آن طول بردار و ضریب درهمتنیدگی (interleave factor) را نشان میدهند.
نکته:
گزینهها (OPTIONS)
اگر input برابر "-" باشد یا وارد نشود، llvm-opt-report ورودی را از ورودی استاندارد میخواند؛ در غیر این صورت، از نام فایل مشخصشده خوانده خواهد شد.
اگر گزینه -o مشخص نشود، llvm-opt-report خروجی خود را به خروجی استاندارد ارسال خواهد کرد. اگر برای گزینه -o مقدار "-" تعیین شود، خروجی نیز به خروجی استاندارد ارسال خواهد شد.
- --help
- نمایش گزینههای موجود.
- --version
- نمایش نسخه این برنامه.
- --format=<string>
- قالب فایل رکورد بهینهسازی. آرگومان ورودی میتواند یکی از موارد زیر باشد:
- yaml
- bitstream
- --no-demangle
- نام توابع رمزگشایی (demangle) نشود.
- -o=<string>
- فایل خروجی.
- -r=<string>
- ریشه برای مسیرهای ورودی نسبی.
- -s
- ضرایب برداریسازی و موارد مشابه در گزارش گنجانده نشوند.
وضعیت خروج (EXIT STATUS)
دستور llvm-opt-report در صورت موفقیت مقدار 0 را برمیگرداند. در غیر این صورت، یک پیام خطا در خروجی خطای استاندارد چاپ شده و ابزار مقدار 1 را برمیگرداند.
نویسندگان (AUTHORS)
توسط تیم LLVM نگهداری میشود (https://llvm.org).
کپیرایت و تکثیر (COPYRIGHT)
2003-2026, LLVM Project
| 2026-07-15 | 22 |