کتابخانه‌ی استاندارد · کامپایلر و ابزار

ال ال وی ام llvm

ساختن، بهینه‌سازی، اجرا و پیوند کد با LLVM.

واردسازی ال ال وی ام

LLVM زیرساخت کامپایلری است که پشتوانه‌ی سلام هم هست. با این بسته می‌توانید کامپایلر یا مفسر خودتان را بسازید: یک زمینه و ماژول بسازید، با سازنده دستورها را بنویسید، ماژول را با بررسی بیازمایید و سپس آن را با جیت اجرا یا به پرونده‌ی شیء تبدیل کنید.

اگر IR را به شکل متن دارید، اجرا کل خط لوله را با یک تنظیمات انجام می‌دهد. برای پیوند، LLD درون همین برنامه برای لینوکس با musl، ویندوز با MinGW و WASI کار می‌کند؛ برای بقیه پیوند خارجی پیونددهنده‌ی سیستم را صدا می‌زند.

این بسته به کتابخانه‌ی libsalam_llvm نیاز دارد. نمونه‌ها در سایت فقط بررسی می‌شوند.

گونه‌ها

نتیجه بهینه‌سازی OptResult

ساختار نتیجه بهینه‌سازی
نتیجه‌ی بهینه‌سازی.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستموفق بود.
errerrرشته = ""پیام خطا.
llvm-Target.salam
واردسازی ال ال وی ام
واردسازی سیستم عامل

روال ساختن(ز: ال ال وی ام.زمینه): ال ال وی ام.ماژول:
    م := ال ال وی ام.ماژول جدید(ز، "calc")
    س := ال ال وی ام.سازنده جدید(ز)
    ص۳۲ := ال ال وی ام.نوع سی‌ودو بیتی(ز)
    ناپایا دو := وکتور {} برگردان وکتور<ال ال وی ام.نوع>
    دو.بیفزا(ص۳۲)
    دو.بیفزا(ص۳۲)
    ت := ال ال وی ام.افزودن تابع(م، "salam_add"، ال ال وی ام.نوع تابع(ص۳۲، دو، نادرست))
    ال ال وی ام.قرار دادن در انتها(س، ال ال وی ام.افزودن بلوک(ز، ت، "entry"))
    _ := ال ال وی ام.بازگشت(س، ال ال وی ام.جمع(س، ال ال وی ام.پارامتر(ت، ۰)، ال ال وی ام.پارامتر(ت، ۱)، "s"))
    ال ال وی ام.آزادسازی سازنده(س)
    برگشت م
پایان

روال ریشه:
    ال ال وی ام.مقداردهی اهداف()
    سرچاپ ال ال وی ام.سه‌تایی پیش‌فرض().طول() > ۰
    سرچاپ ال ال وی ام.سطح تولید کد(ال ال وی ام.بهینه‌سازی دو) == ال ال وی ام.سطح تولید پیش‌فرض، ال ال وی ام.خط لوله پاس(ال ال وی ام.بهینه‌سازی سه)
    سرچاپ ال ال وی ام.بهینه‌سازی صفر، ال ال وی ام.بهینه‌سازی یک، ال ال وی ام.بهینه‌سازی اندازه، ال ال وی ام.بهینه‌سازی کمینه اندازه
    سرچاپ ال ال وی ام.سطح تولید بدون بهینه‌سازی، ال ال وی ام.سطح تولید کم، ال ال وی ام.سطح تولید تهاجمی
    سرچاپ ال ال وی ام.پرونده اسمبلی، ال ال وی ام.پرونده شیء، ال ال وی ام.جابجایی پیش‌فرض، ال ال وی ام.جابجایی مستقل از مکان، ال ال وی ام.مدل کد پیش‌فرض

    ن := ال ال وی ام.ماشین هدف جدید(""، ال ال وی ام.بهینه‌سازی دو، نادرست)
    اگر وارونه ن.ok:
        سرچاپ "ماشین هدف ساخته نشد:"، ن.err
        برگشت
    پایان
    ز := ال ال وی ام.زمینه جدید()
    م := ساختن(ز)
    ال ال وی ام.اعمال آرایش داده(م، ن.tm)
    ب := ال ال وی ام.اجرای بهینه‌سازی(م، ن.tm، ال ال وی ام.بهینه‌سازی دو)
    سرچاپ ب.ok
    پوشه := سیستم عامل.پوشه موقت()
    سرچاپ ال ال وی ام.تولید اسمبلی(م، ن.tm، پوشه + "/salam_add.s").ok
    سرچاپ ال ال وی ام.تولید شیء(م، ن.tm، پوشه + "/salam_add.o").ok
    سرچاپ ال ال وی ام.تولید بیت‌کد(م، پوشه + "/salam_add.bc").ok

    سرچاپ ال ال وی ام.کارهای موازی() > ۰
    بخش‌ها := ال ال وی ام.بخش‌های موازی(م، ۴)
    سرچاپ بخش‌ها >= ۱
    م۲ := ساختن(ز)
    پ := ال ال وی ام.بهینه‌سازی سپس تولید موازی(م۲، ن.tm، ال ال وی ام.بهینه‌سازی دو، ۲، پوشه + "/salam_part")
    سرچاپ پ.ok، پ.objects.طول() >= ۱
    ال ال وی ام.آزادسازی ماژول(م)
    ال ال وی ام.آزادسازی ماژول(م۲)
    ال ال وی ام.آزادسازی ماشین هدف(ن.tm)
    ال ال وی ام.آزادسازی زمینه(ز)
پایان

نتیجه اجرا RunResult

ساختار نتیجه اجرا
نتیجه‌ی اجرا با جیت.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستموفق بود.
rcrcصحیح = 0مقدار برگشتی main.
errerrرشته = ""پیام خطا.
llvm-Build.salam
واردسازی ال ال وی ام
واردسازی ورودی خروجی
واردسازی سیستم عامل

روال ریشه:
    ز := ال ال وی ام.زمینه جدید()
    م := ال ال وی ام.ماژول جدید(ز، "fib")
    س := ال ال وی ام.سازنده جدید(ز)
    ص۳۲ := ال ال وی ام.نوع سی‌ودو بیتی(ز)

    هیچ := وکتور {} برگردان وکتور<ال ال وی ام.نوع>
    نوع اصلی := ال ال وی ام.نوع تابع(ص۳۲، هیچ، نادرست)
    اصلی := ال ال وی ام.افزودن تابع(م، "main"، نوع اصلی)
    آغاز := ال ال وی ام.افزودن بلوک(ز، اصلی، "entry")
    حلقه := ال ال وی ام.افزودن بلوک(ز، اصلی، "loop")
    پایانی := ال ال وی ام.افزودن بلوک(ز، اصلی، "done")

    ال ال وی ام.قرار دادن در انتها(س، آغاز)
    _ := ال ال وی ام.پرش(س، حلقه)
    ال ال وی ام.قرار دادن در انتها(س، حلقه)
    شمارنده := ال ال وی ام.فای(س، ص۳۲، "i")
    الف := ال ال وی ام.فای(س، ص۳۲، "a")
    ب := ال ال وی ام.فای(س، ص۳۲، "b")
    جمع := ال ال وی ام.جمع(س، الف، ب، "sum")
    بعدی := ال ال وی ام.جمع(س، شمارنده، ال ال وی ام.ثابت صحیح(ص۳۲، ۱)، "inext")
    ادامه := ال ال وی ام.مقایسه صحیح(س، ال ال وی ام.مقایسه کمتر علامت‌دار، بعدی، ال ال وی ام.ثابت صحیح(ص۳۲، ۱۰)، "more")
    _ := ال ال وی ام.پرش شرطی(س، ادامه، حلقه، پایانی)

    ناپایا مبداها := وکتور {} برگردان وکتور<ال ال وی ام.بلوک پایه>
    مبداها.بیفزا(آغاز)
    مبداها.بیفزا(حلقه)
    ناپایا ورودی ش := وکتور {} برگردان وکتور<ال ال وی ام.مقدار>
    ورودی ش.بیفزا(ال ال وی ام.ثابت صحیح(ص۳۲، ۰))
    ورودی ش.بیفزا(بعدی)
    ال ال وی ام.افزودن ورودی فای(شمارنده، ورودی ش، مبداها)
    ناپایا ورودی الف := وکتور {} برگردان وکتور<ال ال وی ام.مقدار>
    ورودی الف.بیفزا(ال ال وی ام.ثابت صحیح(ص۳۲، ۰))
    ورودی الف.بیفزا(ب)
    ال ال وی ام.افزودن ورودی فای(الف، ورودی الف، مبداها)
    ناپایا ورودی ب := وکتور {} برگردان وکتور<ال ال وی ام.مقدار>
    ورودی ب.بیفزا(ال ال وی ام.ثابت صحیح(ص۳۲، ۱))
    ورودی ب.بیفزا(جمع)
    ال ال وی ام.افزودن ورودی فای(ب، ورودی ب، مبداها)
    ال ال وی ام.قرار دادن در انتها(س، پایانی)
    _ := ال ال وی ام.بازگشت(س، ب)

    ب۲ := ال ال وی ام.بررسی(م)
    سرچاپ ب۲.ok
    چاپ ال ال وی ام.ماژول به رشته(م)
    مسیر := سیستم عامل.پوشه موقت() + "/salam_fib.ll"
    _ := ورودی خروجی.نوشتن پرونده(مسیر، ال ال وی ام.ماژول به رشته(م))
    ن := ال ال وی ام.اجرای جیت(مسیر)
    سرچاپ ن.ok، ن.rc
    ال ال وی ام.آزادسازی سازنده(س)
    ال ال وی ام.آزادسازی ماژول(م)
    ال ال وی ام.آزادسازی زمینه(ز)
پایان

نوع Type

ساختار نوع
یک نوع LLVM.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

مقدار Value

ساختار مقدار
یک مقدار: ثابت، دستور، پارامتر یا تابع.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

بلوک پایه BasicBlock

ساختار بلوک پایه
یک بلوک پایه: دستورهایی که با یک پرش یا بازگشت تمام می‌شوند.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

سازنده Builder

ساختار سازنده
سازنده‌ی دستورها؛ دستورها را در انتهای بلوک جاری می‌افزاید.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

نتیجه موازی ParallelResult

ساختار نتیجه موازی
نتیجه‌ی تولید موازی.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستموفق بود.
errerrرشته = ""پیام خطا.
objectsobjectsوکتور<رشته>پرونده‌های شیء ساخته‌شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

نتیجه پیوند LinkResult

ساختار نتیجه پیوند
نتیجه‌ی پیوند.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستموفق بود.
errerrرشته = ""پیام خطا.
llvm-Run.salam
واردسازی ال ال وی ام
واردسازی ورودی خروجی
واردسازی سیستم عامل
واردسازی حافظه

روال ریشه:
    سرچاپ ال ال وی ام.در دسترس()
    پوشه := سیستم عامل.پوشه موقت()
    ll := پوشه + "/salam_args.ll"
    _ := ورودی خروجی.نوشتن پرونده(ll، `define i32 @main(i32 %argc, ptr %argv) {
entry:
  %n = mul i32 %argc, 10
  ret i32 %n
}
`)

    ت := ال ال وی ام.تجزیه آی آر(ll)
    سرچاپ ت.ok
    ب := ال ال وی ام.بررسی(ت.mod)
    سرچاپ ب.ok، ال ال وی ام.بررسی با بازگرداندن وضعیت
    ال ال وی ام.تنظیم سه‌تایی هدف(ت.mod، ال ال وی ام.سه‌تایی پیش‌فرض())
    سرچاپ ال ال وی ام.سه‌تایی هدف(ت.mod) == ال ال وی ام.سه‌تایی پیش‌فرض()
    ال ال وی ام.آزادسازی ماژول(ت.mod)
    ال ال وی ام.آزادسازی زمینه(ت.ctx)

    ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
    آرگ.بیفزا("a")
    آرگ.بیفزا("b")
    سرچاپ ال ال وی ام.اجرای جیت با آرگومان(ll، آرگ).rc

    ناپایا گ := ال ال وی ام.تنظیمات پیش‌فرض()
    سرچاپ گ.opt_level، گ.output_mode
    گ.output_mode = ال ال وی ام.خروجی جیت
    گ.run_args = آرگ
    سرچاپ ال ال وی ام.اجرا(ll، گ).rc
    گ.output_mode = ال ال وی ام.خروجی شیء
    گ.output_file = پوشه + "/salam_args.o"
    سرچاپ ال ال وی ام.اجرا(ll، گ).ok
    گ.output_mode = ال ال وی ام.خروجی اسمبلی
    گ.output_file = پوشه + "/salam_args.s"
    سرچاپ ال ال وی ام.اجرا(ll، گ).ok
    سرچاپ ال ال وی ام.خروجی آی آر، ال ال وی ام.خروجی بیت‌کد، ال ال وی ام.خروجی اجرایی

    سرچاپ ال ال وی ام.سه‌تایی پیوند میزبان()، ال ال وی ام.ال ال دی در دسترس()
    سرچاپ ال ال وی ام.می‌توان سه‌تایی را پیوند داد("x86_64-unknown-linux-musl")، ال ال وی ام.می‌توان سه‌تایی را پیوند داد("x86_64-w64-windows-gnu")، ال ال وی ام.می‌توان سه‌تایی را پیوند داد("aarch64-apple-darwin")
    سرچاپ ال ال وی ام.پیونددهنده ای ال اف، ال ال وی ام.پیونددهنده مینگو، ال ال وی ام.پیونددهنده کاف، ال ال وی ام.پیونددهنده ماخ او، ال ال وی ام.پیونددهنده وسم
    ن := ال ال وی ام.پیوند خارجی(پوشه + "/salam_args.o"، پوشه + "/salam_args"، ال ال وی ام.تنظیمات پیش‌فرض())
    سرچاپ ن.ok، ن.err
    اگر ن.ok:
        سرچاپ سیستم عامل.اجرا(پوشه + "/salam_args x y")
    پایان

    ناپایا م := ال ال وی ام.تنظیمات پیش‌فرض()
    م.target_triple = "x86_64-unknown-linux-musl"
    سرچاپ ال ال وی ام.پیوند خودکار(پوشه + "/salam_args.o"، پوشه + "/salam_args_musl"، م).ok
    _ := ال ال وی ام.پیوند ای ال اف(پوشه + "/a.o"، پوشه + "/a"، م)
    _ := ال ال وی ام.پیوند مینگو(پوشه + "/a.o"، پوشه + "/a.exe"، م)
    _ := ال ال وی ام.پیوند وازی(پوشه + "/a.o"، پوشه + "/a.wasm"، م)
    ناپایا آرگ‌ها := حافظه.تخصیص(۶۴ برگردان طبیعی۶۴) برگردان رشته*
    آرگ‌ها[۰] = "ld.lld"
    آرگ‌ها[۱] = "--version"
    سرچاپ ال ال وی ام.پیوند(ال ال وی ام.پیونددهنده ای ال اف، آرگ‌ها برگردان تهی*، ۲)
    حافظه.آزادسازی(آرگ‌ها برگردان تهی*)
پایان

نتیجه تولید EmitResult

ساختار نتیجه تولید
نتیجه‌ی تولید پرونده.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستموفق بود.
errerrرشته = ""پیام خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

زمینه Context

ساختار زمینه
زمینه‌ی LLVM؛ همه‌ی نوع‌ها و ماژول‌ها به آن تعلق دارند.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

ماژول Module

ساختار ماژول
یک ماژول: تابع‌ها و متغیرهای سراسری.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

نتیجه تجزیه ParseResult

ساختار نتیجه تجزیه
نتیجه‌ی تجزیه‌ی IR.
نامانگلیسیگونهتوضیح
ctxctxزمینهزمینه‌ای که ساخته شد؛ آن را هم آزاد کنید.
modmodماژولماژول.
okokمنطقی = نادرستموفق بود.
errerrرشته = ""پیام خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

نتیجه بررسی VerifyResult

ساختار نتیجه بررسی
نتیجه‌ی بررسی.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستماژول درست است.
errerrرشته = ""توضیح خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

تنظیمات Options

ساختار تنظیمات
تنظیمات خط لوله‌ی اجرا.
نامانگلیسیگونهتوضیح
opt_levelopt_levelصحیح = 0سطح بهینه‌سازی.
debug_infodebug_infoمنطقی = نادرستاطلاعات اشکال‌زدایی نگه داشته شود.
verify_moduleverify_moduleمنطقی = نادرستماژول پیش از تولید بررسی شود.
native_cpunative_cpuمنطقی = نادرستبرای پردازنده‌ی همین ماشین بهینه شود.
output_modeoutput_modeصحیح = 0گونه‌ی خروجی، یکی از ثابت‌های خروجی ....
output_fileoutput_fileرشته = ""مسیر خروجی.
target_tripletarget_tripleرشته = ""سه‌تایی هدف؛ خالی یعنی سه‌تایی ماژول.
link_libslink_libsوکتور<رشته>کتابخانه‌هایی که پیوند می‌شوند.
link_kindslink_kindsوکتور<رشته>گونه‌ی هر کتابخانه: ایستا یا پویا.
sysrootsysrootرشته = ""ریشه‌ی سیستم هدف برای پیوند متقاطع.
lib_pathslib_pathsوکتور<رشته>مسیرهای جستجوی کتابخانه.
extra_objectsextra_objectsوکتور<رشته>پرونده‌های شیء دیگر برای پیوند.
run_argsrun_argsوکتور<رشته>آرگومان‌ها برای اجرا با جیت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

خروجی Output

ساختار خروجی
نتیجه‌ی اجرا.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستموفق بود.
errorerrorرشته = ""پیام خطا.
rcrcصحیح = 0کد خروج برنامه در حالت جیت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

ماشین هدف TargetMachine

ساختار ماشین هدف
ماشین هدف: معماری، پردازنده و سطح بهینه‌سازی برای تولید کد.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

داده هدف TargetData

ساختار داده هدف
آرایش داده‌ی یک هدف.
نامانگلیسیگونهتوضیح
handlehandleتهی*دستگیره‌ی داخلی LLVM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

نتیجه ماشین هدف TargetMachineResult

ساختار نتیجه ماشین هدف
نتیجه‌ی ساختن ماشین هدف.
نامانگلیسیگونهتوضیح
tmtmماشین هدفماشین هدف.
okokمنطقی = نادرستموفق بود.
errerrرشته = ""پیام خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

پایاها و متغیرها

مقایسه مساوی INT_EQ

پایا مقایسه مساوی: صحیح۳۲ = 32
گزاره‌ی مقایسه‌ی صحیح: مساوی.
llvm-Program.salam
واردسازی ال ال وی ام
واردسازی ورودی خروجی
واردسازی سیستم عامل

روال ریشه:
    ز := ال ال وی ام.زمینه جدید()
    م := ال ال وی ام.ماژول جدید(ز، "hello")
    س := ال ال وی ام.سازنده جدید(ز)
    ص۳۲ := ال ال وی ام.نوع سی‌ودو بیتی(ز)
    ص۶۴ := ال ال وی ام.نوع شصت‌وچهار بیتی(ز)
    ا۶۴ := ال ال وی ام.نوع اعشاری دقیق(ز)
    اش := ال ال وی ام.نوع اشاره‌گر(ز)
    _ := ال ال وی ام.نوع یک بیتی(ز)
    _ := ال ال وی ام.نوع هشت بیتی(ز)
    _ := ال ال وی ام.نوع شانزده بیتی(ز)
    _ := ال ال وی ام.نوع اعشاری(ز)
    _ := ال ال وی ام.نوع آرایه(ص۳۲، ۴)

    ناپایا پارامترهای قالب := وکتور {} برگردان وکتور<ال ال وی ام.نوع>
    پارامترهای قالب.بیفزا(اش)
    نوع قالب := ال ال وی ام.نوع تابع(ص۳۲، پارامترهای قالب، درست)
    _ := ال ال وی ام.افزودن تابع(م، "printf"، نوع قالب)
    چاپگر := ال ال وی ام.تابع نام‌دار(م، "printf")

    ناپایا دو عدد := وکتور {} برگردان وکتور<ال ال وی ام.نوع>
    دو عدد.بیفزا(ص۶۴)
    دو عدد.بیفزا(ص۶۴)
    نوع حساب := ال ال وی ام.نوع تابع(ص۶۴، دو عدد، نادرست)
    حساب := ال ال وی ام.افزودن تابع(م، "calc"، نوع حساب)
    ال ال وی ام.تنظیم پیوند(حساب، ال ال وی ام.پیوند درونی)
    ال ال وی ام.قرار دادن در انتها(س، ال ال وی ام.افزودن بلوک(ز، حساب، "entry"))
    ل := ال ال وی ام.پارامتر(حساب، ۰)
    ر := ال ال وی ام.پارامتر(حساب، ۱)
    ت := ال ال وی ام.تفریق(س، ال ال وی ام.ضرب(س، ل، ر، "m")، ال ال وی ام.تقسیم علامت‌دار(س، ل، ر، "d")، "t")
    _ := ال ال وی ام.بازگشت(س، ال ال وی ام.جمع(س، ت، ال ال وی ام.باقیمانده علامت‌دار(س، ل، ر، "r")، "x"))

    شمار := ال ال وی ام.افزودن سراسری(م، ص۶۴، "count")
    ال ال وی ام.تنظیم مقدار اولیه(شمار، ال ال وی ام.ثابت صحیح(ص۶۴، ۴۰))
    پی := ال ال وی ام.افزودن سراسری(م، ا۶۴، "pi")
    ال ال وی ام.تنظیم مقدار اولیه(پی، ال ال وی ام.ثابت اعشاری(ا۶۴، ۳.۱۴))
    ال ال وی ام.تنظیم ثابت سراسری(پی، درست)

    هیچ := وکتور {} برگردان وکتور<ال ال وی ام.نوع>
    اصلی := ال ال وی ام.افزودن تابع(م، "main"، ال ال وی ام.نوع تابع(ص۳۲، هیچ، نادرست))
    ال ال وی ام.قرار دادن در انتها(س، ال ال وی ام.افزودن بلوک(ز، اصلی، "entry"))
    سرچاپ ال ال وی ام.بلوک درج(س).handle != پوچ
    جا := ال ال وی ام.تخصیص پشته(س، ص۶۴، "n")
    _ := ال ال وی ام.ذخیره(س، ال ال وی ام.بارگذاری(س، ص۶۴، شمار، "c")، جا)
    ناپایا آرگ := وکتور {} برگردان وکتور<ال ال وی ام.مقدار>
    آرگ.بیفزا(ال ال وی ام.بارگذاری(س، ص۶۴، جا، "n1"))
    آرگ.بیفزا(ال ال وی ام.ثابت صحیح(ص۶۴، ۸))
    نتیجه := ال ال وی ام.فراخوان(س، نوع حساب، حساب، آرگ، "v")
    ناپایا آرگ قالب := وکتور {} برگردان وکتور<ال ال وی ام.مقدار>
    آرگ قالب.بیفزا(ال ال وی ام.رشته سراسری(س، "calc(40, 8) = %lld\n"، "fmt"))
    آرگ قالب.بیفزا(نتیجه)
    _ := ال ال وی ام.فراخوان(س، نوع قالب، چاپگر، آرگ قالب، "")
    _ := ال ال وی ام.بازگشت(س، ال ال وی ام.ثابت صحیح(ص۳۲، ۰))

    تهی := وکتور {} برگردان وکتور<ال ال وی ام.نوع>
    هیچ‌کار := ال ال وی ام.افزودن تابع(م، "noop"، ال ال وی ام.نوع تابع(ال ال وی ام.نوع تهی(ز)، تهی، نادرست))
    ال ال وی ام.تنظیم پیوند(هیچ‌کار، ال ال وی ام.پیوند خصوصی)
    ال ال وی ام.قرار دادن در انتها(س، ال ال وی ام.افزودن بلوک(ز، هیچ‌کار، "entry"))
    _ := ال ال وی ام.بازگشت تهی(س)
    سرچاپ ال ال وی ام.پیوند بیرونی، ال ال وی ام.بررسی(م).ok
    سرچاپ ال ال وی ام.مقایسه مساوی، ال ال وی ام.مقایسه نامساوی، ال ال وی ام.مقایسه بیشتر بی‌علامت، ال ال وی ام.مقایسه بیشتر مساوی بی‌علامت، ال ال وی ام.مقایسه کمتر بی‌علامت، ال ال وی ام.مقایسه کمتر مساوی بی‌علامت
    سرچاپ ال ال وی ام.مقایسه بیشتر علامت‌دار، ال ال وی ام.مقایسه بیشتر مساوی علامت‌دار، ال ال وی ام.مقایسه کمتر علامت‌دار، ال ال وی ام.مقایسه کمتر مساوی علامت‌دار

    مسیر := سیستم عامل.پوشه موقت() + "/salam_hello.ll"
    _ := ورودی خروجی.نوشتن پرونده(مسیر، ال ال وی ام.ماژول به رشته(م))
    سرچاپ ال ال وی ام.اجرای جیت(مسیر).rc
    ال ال وی ام.آزادسازی سازنده(س)
    ال ال وی ام.آزادسازی ماژول(م)
    ال ال وی ام.آزادسازی زمینه(ز)
پایان

مقایسه نامساوی INT_NE

پایا مقایسه نامساوی: صحیح۳۲ = 33
گزاره‌ی مقایسه‌ی صحیح: نامساوی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه بیشتر بی‌علامت INT_UGT

پایا مقایسه بیشتر بی‌علامت: صحیح۳۲ = 34
گزاره‌ی مقایسه‌ی صحیح: بیشتر، بی‌علامت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه بیشتر مساوی بی‌علامت INT_UGE

پایا مقایسه بیشتر مساوی بی‌علامت: صحیح۳۲ = 35
گزاره‌ی مقایسه‌ی صحیح: بیشتر یا مساوی، بی‌علامت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه کمتر بی‌علامت INT_ULT

پایا مقایسه کمتر بی‌علامت: صحیح۳۲ = 36
گزاره‌ی مقایسه‌ی صحیح: کمتر، بی‌علامت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه کمتر مساوی بی‌علامت INT_ULE

پایا مقایسه کمتر مساوی بی‌علامت: صحیح۳۲ = 37
گزاره‌ی مقایسه‌ی صحیح: کمتر یا مساوی، بی‌علامت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه بیشتر علامت‌دار INT_SGT

پایا مقایسه بیشتر علامت‌دار: صحیح۳۲ = 38
گزاره‌ی مقایسه‌ی صحیح: بیشتر، علامت‌دار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه بیشتر مساوی علامت‌دار INT_SGE

پایا مقایسه بیشتر مساوی علامت‌دار: صحیح۳۲ = 39
گزاره‌ی مقایسه‌ی صحیح: بیشتر یا مساوی، علامت‌دار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه کمتر علامت‌دار INT_SLT

پایا مقایسه کمتر علامت‌دار: صحیح۳۲ = 40
گزاره‌ی مقایسه‌ی صحیح: کمتر، علامت‌دار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

مقایسه کمتر مساوی علامت‌دار INT_SLE

پایا مقایسه کمتر مساوی علامت‌دار: صحیح۳۲ = 41
گزاره‌ی مقایسه‌ی صحیح: کمتر یا مساوی، علامت‌دار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

پیوند بیرونی LINKAGE_EXTERNAL

پایا پیوند بیرونی: صحیح۳۲ = 0
پیوند بیرونی: از ماژول‌های دیگر دیده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

پیوند درونی LINKAGE_INTERNAL

پایا پیوند درونی: صحیح۳۲ = 8
پیوند درونی: فقط در همین ماژول، مثل static در C.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

پیوند خصوصی LINKAGE_PRIVATE

پایا پیوند خصوصی: صحیح۳۲ = 9
پیوند خصوصی: حتی در جدول نمادها نمی‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

پیونددهنده ای ال اف LLD_ELF

پایا پیونددهنده ای ال اف: صحیح۳۲ = 0
گونه‌ی LLD برای ELF.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیونددهنده مینگو LLD_MINGW

پایا پیونددهنده مینگو: صحیح۳۲ = 1
گونه‌ی LLD برای MinGW.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیونددهنده کاف LLD_COFF

پایا پیونددهنده کاف: صحیح۳۲ = 2
گونه‌ی LLD برای COFF ویندوز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیونددهنده ماخ او LLD_MACHO

پایا پیونددهنده ماخ او: صحیح۳۲ = 3
گونه‌ی LLD برای Mach-O مک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیونددهنده وسم LLD_WASM

پایا پیونددهنده وسم: صحیح۳۲ = 4
گونه‌ی LLD برای WebAssembly.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

بررسی با بازگرداندن وضعیت VERIFY_RETURN_STATUS

پایا بررسی با بازگرداندن وضعیت: صحیح۳۲ = 1
حالت بررسی که خطا را برمی‌گرداند، به جای توقف برنامه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

بهینه‌سازی صفر OPT_O0

پایا بهینه‌سازی صفر: صحیح۳۲ = 0
سطح بهینه‌سازی: بی بهینه‌سازی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

بهینه‌سازی یک OPT_O1

پایا بهینه‌سازی یک: صحیح۳۲ = 1
سطح بهینه‌سازی: بهینه‌سازی کم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

بهینه‌سازی دو OPT_O2

پایا بهینه‌سازی دو: صحیح۳۲ = 2
سطح بهینه‌سازی: بهینه‌سازی معمول.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

بهینه‌سازی سه OPT_O3

پایا بهینه‌سازی سه: صحیح۳۲ = 3
سطح بهینه‌سازی: بهینه‌سازی تهاجمی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

بهینه‌سازی اندازه OPT_OS

پایا بهینه‌سازی اندازه: صحیح۳۲ = 4
سطح بهینه‌سازی: کوچک‌کردن کد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

بهینه‌سازی کمینه اندازه OPT_OZ

پایا بهینه‌سازی کمینه اندازه: صحیح۳۲ = 5
سطح بهینه‌سازی: کوچک‌ترین کد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

خروجی آی آر OUT_IR

پایا خروجی آی آر: صحیح۳۲ = 0
گونه‌ی خروجی: متن IR.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

خروجی اسمبلی OUT_ASM

پایا خروجی اسمبلی: صحیح۳۲ = 1
گونه‌ی خروجی: اسمبلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

خروجی شیء OUT_OBJ

پایا خروجی شیء: صحیح۳۲ = 2
گونه‌ی خروجی: پرونده‌ی شیء.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

خروجی بیت‌کد OUT_BITCODE

پایا خروجی بیت‌کد: صحیح۳۲ = 3
گونه‌ی خروجی: بیت‌کد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

خروجی اجرایی OUT_EXEC

پایا خروجی اجرایی: صحیح۳۲ = 4
گونه‌ی خروجی: پرونده‌ی اجرایی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

خروجی جیت OUT_JIT

پایا خروجی جیت: صحیح۳۲ = 5
گونه‌ی خروجی: اجرا با جیت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پرونده اسمبلی CODEGEN_FILE_ASSEMBLY

پایا پرونده اسمبلی: صحیح۳۲ = 0
گونه‌ی پرونده‌ی تولیدی: اسمبلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

پرونده شیء CODEGEN_FILE_OBJECT

پایا پرونده شیء: صحیح۳۲ = 1
گونه‌ی پرونده‌ی تولیدی: شیء.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

سطح تولید بدون بهینه‌سازی CODEGEN_LEVEL_NONE

پایا سطح تولید بدون بهینه‌سازی: صحیح۳۲ = 0
سطح تولید کد: بی بهینه‌سازی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

سطح تولید کم CODEGEN_LEVEL_LESS

پایا سطح تولید کم: صحیح۳۲ = 1
سطح تولید کد: کم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

سطح تولید پیش‌فرض CODEGEN_LEVEL_DEFAULT

پایا سطح تولید پیش‌فرض: صحیح۳۲ = 2
سطح تولید کد: پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

سطح تولید تهاجمی CODEGEN_LEVEL_AGGRESSIVE

پایا سطح تولید تهاجمی: صحیح۳۲ = 3
سطح تولید کد: تهاجمی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

جابجایی پیش‌فرض RELOC_DEFAULT

پایا جابجایی پیش‌فرض: صحیح۳۲ = 0
مدل جابجایی پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

جابجایی مستقل از مکان RELOC_PIC

پایا جابجایی مستقل از مکان: صحیح۳۲ = 2
کد مستقل از مکان، برای کتابخانه‌های مشترک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

مدل کد پیش‌فرض CODE_MODEL_DEFAULT

پایا مدل کد پیش‌فرض: صحیح۳۲ = 0
مدل کد پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

روال‌ها

اجرای بهینه‌سازی RunOpt

روال اجرای بهینه‌سازی(mod: ماژول، tm: ماشین هدف، opt_level: صحیح): نتیجه بهینه‌سازی
پاس‌های بهینه‌سازی را روی ماژول اجرا می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

اجرای جیت RunJIT

روال اجرای جیت(ll_path: رشته): نتیجه اجرا
پرونده‌ی .ll را با جیت ORC در همین فرایند اجرا و main را صدا می‌زند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

اجرای جیت با آرگومان RunJITArgs

روال اجرای جیت با آرگومان(ll_path: رشته، args: وکتور<رشته>): نتیجه اجرا
مثل روال بالا، با آرگومان‌های خط فرمان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

ماژول جدید NewModule

روال ماژول جدید(ctx: زمینه، name: رشته): ماژول
ماژول تازه با نام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

ماژول به رشته ModuleToString

روال ماژول به رشته(mod: ماژول): رشته
متن IR ماژول.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

نوع یک بیتی Int1Type

روال نوع یک بیتی(c: زمینه): نوع
نوع i1، برای بولی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع هشت بیتی Int8Type

روال نوع هشت بیتی(c: زمینه): نوع
نوع i8.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع شانزده بیتی Int16Type

روال نوع شانزده بیتی(c: زمینه): نوع
نوع i16.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع سی‌ودو بیتی Int32Type

روال نوع سی‌ودو بیتی(c: زمینه): نوع
نوع i32.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

نوع شصت‌وچهار بیتی Int64Type

روال نوع شصت‌وچهار بیتی(c: زمینه): نوع
نوع i64.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع تهی VoidType

روال نوع تهی(c: زمینه): نوع
نوع void.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع اعشاری FloatType

روال نوع اعشاری(c: زمینه): نوع
نوع float سی‌ودو بیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع اعشاری دقیق DoubleType

روال نوع اعشاری دقیق(c: زمینه): نوع
نوع double شصت‌وچهار بیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع اشاره‌گر PointerType

روال نوع اشاره‌گر(c: زمینه): نوع
نوع اشاره‌گر بی‌نوع ptr.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع آرایه ArrayType

روال نوع آرایه(elem: نوع، n: صحیح۶۴): نوع
نوع آرایه با طول ثابت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

نوع تابع FunctionType

روال نوع تابع(ret_ty: نوع، params: وکتور<نوع>، vararg: منطقی): نوع
نوع تابع با نوع برگشتی، پارامترها و پرچم تعداد متغیر آرگومان، مثل printf.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

افزودن تابع AddFunction

روال افزودن تابع(mod: ماژول، name: رشته، fnty: نوع): مقدار
تابعی به ماژول می‌افزاید؛ بی بلوک، فقط اعلان است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

تابع نام‌دار NamedFunction

روال تابع نام‌دار(mod: ماژول، name: رشته): مقدار
تابع با نام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

پارامتر Param

روال پارامتر(fn: مقدار، idx: صحیح): مقدار
پارامتر شماره‌ی i تابع.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

تنظیم پیوند SetLinkage

روال تنظیم پیوند(v: مقدار، linkage: صحیح)
نوع پیوند را تنظیم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

افزودن بلوک AppendBlock

روال افزودن بلوک(c: زمینه، fn: مقدار، name: رشته): بلوک پایه
بلوک تازه به انتهای تابع می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

سازنده جدید NewBuilder

روال سازنده جدید(c: زمینه): سازنده
سازنده‌ی تازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

قرار دادن در انتها PositionAtEnd

روال قرار دادن در انتها(b: سازنده، bb: بلوک پایه)
سازنده را به انتهای بلوک می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

بلوک درج InsertBlock

روال بلوک درج(b: سازنده): بلوک پایه
بلوکی که سازنده الان در آن می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

آزادسازی سازنده FreeBuilder

روال آزادسازی سازنده(b: سازنده)
سازنده را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

ثابت صحیح ConstInt

روال ثابت صحیح(ty: نوع، v: صحیح۶۴): مقدار
ثابت صحیح.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

ثابت اعشاری ConstReal

روال ثابت اعشاری(ty: نوع، v: اعشار۶۴): مقدار
ثابت اعشاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

بازگشت Ret

روال بازگشت(b: سازنده، v: مقدار): مقدار
از تابع با مقدار برمی‌گردد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

بازگشت تهی RetVoid

روال بازگشت تهی(b: سازنده): مقدار
از تابع بی مقدار برمی‌گردد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

جمع Add

روال جمع(b: سازنده، l: مقدار، r: مقدار، name: رشته): مقدار
جمع.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

تفریق Sub

روال تفریق(b: سازنده، l: مقدار، r: مقدار، name: رشته): مقدار
تفریق.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

ضرب Mul

روال ضرب(b: سازنده، l: مقدار، r: مقدار، name: رشته): مقدار
ضرب.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

تقسیم علامت‌دار SDiv

روال تقسیم علامت‌دار(b: سازنده، l: مقدار، r: مقدار، name: رشته): مقدار
تقسیم صحیح علامت‌دار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

باقیمانده علامت‌دار SRem

روال باقیمانده علامت‌دار(b: سازنده، l: مقدار، r: مقدار، name: رشته): مقدار
باقیمانده‌ی علامت‌دار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

مقایسه صحیح ICmp

روال مقایسه صحیح(b: سازنده، pred: صحیح، l: مقدار، r: مقدار، name: رشته): مقدار
مقایسه‌ی صحیح با یکی از ثابت‌های مقایسه ...؛ نتیجه i1 است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

پرش Br

روال پرش(b: سازنده، dest: بلوک پایه): مقدار
پرش بی‌شرط.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

پرش شرطی CondBr

روال پرش شرطی(b: سازنده، cond: مقدار، t: بلوک پایه، f: بلوک پایه): مقدار
پرش شرطی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

فای Phi

روال فای(b: سازنده، ty: نوع، name: رشته): مقدار
دستور phi: مقداری که به بلوک مبدأ بستگی دارد؛ برای حلقه‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

افزودن ورودی فای AddIncoming

روال افزودن ورودی فای(phi: مقدار، vals: وکتور<مقدار>، blocks: وکتور<بلوک پایه>)
جفت‌های مقدار و بلوک مبدأ را به phi می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

فراخوان Call

روال فراخوان(b: سازنده، fnty: نوع، fn: مقدار، args: وکتور<مقدار>، name: رشته): مقدار
تابعی را با نوعش و آرگومان‌ها صدا می‌زند؛ برای تابع void نام را خالی بگذارید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

تخصیص پشته Alloca

روال تخصیص پشته(b: سازنده، ty: نوع، name: رشته): مقدار
جایی روی پشته می‌گیرد و اشاره‌گرش را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

بارگذاری Load

روال بارگذاری(b: سازنده، ty: نوع، ptr: مقدار، name: رشته): مقدار
مقداری از اشاره‌گر می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

ذخیره Store

روال ذخیره(b: سازنده، val: مقدار، ptr: مقدار): مقدار
مقداری را در اشاره‌گر می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

رشته سراسری GlobalString

روال رشته سراسری(b: سازنده، s: رشته، name: رشته): مقدار
رشته‌ی ثابت سراسری و اشاره‌گرش.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

افزودن سراسری AddGlobal

روال افزودن سراسری(mod: ماژول، ty: نوع، name: رشته): مقدار
متغیر سراسری می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

تنظیم مقدار اولیه SetInitializer

روال تنظیم مقدار اولیه(g: مقدار، v: مقدار)
مقدار اولیه‌ی متغیر سراسری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

تنظیم ثابت سراسری SetGlobalConstant

روال تنظیم ثابت سراسری(g: مقدار، flag: منطقی)
متغیر سراسری را ثابت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

کارهای موازی ParallelJobs

روال کارهای موازی(): صحیح
شمار کارهای موازی، از روی شمار هسته‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

بخش‌های موازی ParallelPartitions

روال بخش‌های موازی(mod: ماژول، jobs: صحیح): صحیح
ماژول به چند بخش مستقل تقسیم می‌شود؛ بیشتر از jobs نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

بهینه‌سازی سپس تولید موازی OptimizeEmitParallel

روال بهینه‌سازی سپس تولید موازی(mod: ماژول، tm: ماشین هدف، opt_level: صحیح، parts: صحیح، out_prefix: رشته): نتیجه موازی
ماژول را بهینه می‌کند، به چند بخش می‌شکند و پرونده‌های شیء را موازی می‌سازد؛ برای ساخت سریع‌تر برنامه‌های بزرگ.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

ال ال دی در دسترس LldAvailable

روال ال ال دی در دسترس(): منطقی
LLD درون این ساخت پیوند شده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

روال پیوند(flavor: صحیح، argv: تهی*، argc: صحیح): منطقی
LLD را با آرگومان‌های خط فرمان اجرا می‌کند؛ argv آرایه‌ای از رشته‌ها است که نخستینش نام برنامه است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Program.salam

می‌توان سه‌تایی را پیوند داد CanLinkTriple

روال می‌توان سه‌تایی را پیوند داد(t: رشته): منطقی
این هدف با LLD درون‌فرایندی پیوند می‌خورد: ویندوز با MinGW، لینوکس با musl و WASI.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیوند خارجی LinkExternal

روال پیوند خارجی(obj: رشته، out_path: رشته، opts: تنظیمات): نتیجه پیوند
با پیونددهنده‌ی سیستم، مثل cc، پیوند می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

سه‌تایی پیوند میزبان HostLinkTriple

روال سه‌تایی پیوند میزبان(): رشته
سه‌تایی میزبان اگر LLD درون‌فرایندی بتواند برایش پیوند دهد؛ وگرنه خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیوند ای ال اف LinkElf

روال پیوند ای ال اف(obj: رشته، out_path: رشته، opts: تنظیمات): نتیجه پیوند
پرونده‌ی اجرایی ایستای لینوکس با musl.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیوند وازی LinkWasi

روال پیوند وازی(obj: رشته، out_path: رشته، opts: تنظیمات): نتیجه پیوند
ماژول WebAssembly برای WASI.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیوند مینگو LinkMingw

روال پیوند مینگو(obj: رشته، out_path: رشته، opts: تنظیمات): نتیجه پیوند
پرونده‌ی اجرایی ویندوز با MinGW.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

پیوند خودکار LinkAuto

روال پیوند خودکار(obj: رشته، out_path: رشته، opts: تنظیمات): نتیجه پیوند
پیونددهنده را از روی سه‌تایی هدف تنظیمات انتخاب می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

در دسترس Available

روال در دسترس(): منطقی
پشتیبانی LLVM در این ساخت هست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

اجرا Run

روال اجرا(ll_path: رشته، opts: تنظیمات): خروجی
خط لوله‌ی کامل را روی پرونده‌ی .ll با تنظیمات اجرا می‌کند: تجزیه، بهینه‌سازی و تولید خروجی یا اجرا با جیت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

تولید اسمبلی EmitAsm

روال تولید اسمبلی(mod: ماژول، tm: ماشین هدف، path: رشته): نتیجه تولید
ماژول را به اسمبلی می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

تولید شیء EmitObject

روال تولید شیء(mod: ماژول، tm: ماشین هدف، path: رشته): نتیجه تولید
ماژول را به پرونده‌ی شیء می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

تولید بیت‌کد EmitBitcode

روال تولید بیت‌کد(mod: ماژول، path: رشته): نتیجه تولید
ماژول را به بیت‌کد LLVM می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

زمینه جدید NewContext

روال زمینه جدید(): زمینه
زمینه‌ی تازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

آزادسازی زمینه FreeContext

روال آزادسازی زمینه(ctx: زمینه)
زمینه را آزاد می‌کند؛ پس از ماژول‌هایش.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

آزادسازی ماژول FreeModule

روال آزادسازی ماژول(mod: ماژول)
ماژول را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

تجزیه آی آر ParseIR

روال تجزیه آی آر(ll_path: رشته): نتیجه تجزیه
پرونده‌ی متنی .ll را در زمینه‌ی تازه تجزیه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

بررسی Verify

روال بررسی(mod: ماژول): نتیجه بررسی
ماژول را بررسی می‌کند؛ پیش از تولید کد یا جیت صدا بزنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Build.salam

سه‌تایی هدف TargetTripleOf

روال سه‌تایی هدف(mod: ماژول): رشته
سه‌تایی هدف ماژول.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

تنظیم سه‌تایی هدف SetTargetTriple

روال تنظیم سه‌تایی هدف(mod: ماژول، triple: رشته)
سه‌تایی هدف ماژول را تنظیم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

تنظیمات پیش‌فرض OptionsDefault

روال تنظیمات پیش‌فرض(): تنظیمات
تنظیمات پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Run.salam

مقداردهی اهداف InitTargets

روال مقداردهی اهداف()
همه‌ی هدف‌های LLVM را مقداردهی می‌کند؛ پیش از ساختن ماشین هدف یک بار صدا بزنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

سطح تولید کد CodeGenLevelOf

روال سطح تولید کد(opt_level: صحیح): صحیح
سطح تولید کد متناظر با سطح بهینه‌سازی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

خط لوله پاس PassPipelineOf

روال خط لوله پاس(opt_level: صحیح): رشته
خط لوله‌ی پاس‌ها برای سطح بهینه‌سازی، مثل default<O3>.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

سه‌تایی پیش‌فرض DefaultTriple

روال سه‌تایی پیش‌فرض(): رشته
سه‌تایی هدف ماشین میزبان، مثل x86_64-unknown-linux-gnu.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

ماشین هدف جدید NewTargetMachine

روال ماشین هدف جدید(triple: رشته، opt_level: صحیح، native_cpu: منطقی): نتیجه ماشین هدف
ماشین هدف برای سه‌تایی، سطح بهینه‌سازی و پردازنده‌ی بومی می‌سازد؛ سه‌تایی خالی یعنی میزبان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

آزادسازی ماشین هدف FreeTargetMachine

روال آزادسازی ماشین هدف(tm: ماشین هدف)
ماشین هدف را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam

اعمال آرایش داده ApplyDataLayout

روال اعمال آرایش داده(mod: ماژول، tm: ماشین هدف)
آرایش داده و سه‌تایی ماشین هدف را روی ماژول می‌گذارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: llvm-Target.salam