LLVM-OPT-REPORT(1) LLVM LLVM-OPT-REPORT(1)

llvm-opt-report - تولید گزارش بهینه‌سازی از طریق YAML

llvm-opt-report [گزینه‌ها] [input]

ابزار 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) را نشان می‌دهند.

نکته:

اگر یک خط مشخص از کد دو بار در خروجی آورده شود، به این معنی است که یک مرحله بهینه‌سازی یکسان دو بار روی آن خط از کد اعمال شده و این مرحله در تکرار دوم توانسته است کد را بیش از پیش بهینه‌سازی کند.

اگر input برابر "-" باشد یا وارد نشود، llvm-opt-report ورودی را از ورودی استاندارد می‌خواند؛ در غیر این صورت، از نام فایل مشخص‌شده خوانده خواهد شد.

اگر گزینه -o مشخص نشود، llvm-opt-report خروجی خود را به خروجی استاندارد ارسال خواهد کرد. اگر برای گزینه -o مقدار "-" تعیین شود، خروجی نیز به خروجی استاندارد ارسال خواهد شد.

نمایش گزینه‌های موجود.
نمایش نسخه این برنامه.
قالب فایل رکورد بهینه‌سازی. آرگومان ورودی می‌تواند یکی از موارد زیر باشد:
  • yaml
  • bitstream
نام توابع رمزگشایی (demangle) نشود.
فایل خروجی.
ریشه برای مسیرهای ورودی نسبی.
ضرایب برداری‌سازی و موارد مشابه در گزارش گنجانده نشوند.

دستور llvm-opt-report در صورت موفقیت مقدار 0 را برمی‌گرداند. در غیر این صورت، یک پیام خطا در خروجی خطای استاندارد چاپ شده و ابزار مقدار 1 را برمی‌گرداند.

توسط تیم LLVM نگهداری می‌شود (https://llvm.org).

2003-2026, LLVM Project

2026-07-15 22