คำถามติดแท็ก llvm

โครงการ LLVM เป็นชุดของคอมไพเลอร์และเทคโนโลยี Toolchain แบบโมดูลาร์ที่สามารถนำกลับมาใช้ใหม่ได้ แท็ก llvm ส่วนใหญ่ใช้สำหรับเขียนโค้ด C ++ (หรือภาษาอื่นผ่านการผูก C) เพื่อเชื่อมต่อกับไลบรารี LLVM ไม่เกี่ยวกับเครื่องมือใด ๆ (จากจำนวนที่เพิ่มขึ้น) ที่มี LLVM อยู่ภายใต้ประทุน ดูแท็ก "llvm-codegen" สำหรับคำถามเกี่ยวกับรหัสเครื่องที่สร้างโดย LLVM

5
มาตรฐาน C ++ อนุญาตให้บูลที่ไม่กำหนดค่าเริ่มต้นขัดข้องโปรแกรมหรือไม่
ฉันรู้ว่า"พฤติกรรมที่ไม่ได้กำหนด"ใน C ++ สามารถอนุญาตให้คอมไพเลอร์ทำสิ่งที่ต้องการได้ อย่างไรก็ตามฉันมีข้อผิดพลาดที่ทำให้ฉันประหลาดใจเพราะฉันคิดว่ารหัสนั้นปลอดภัยพอ ในกรณีนี้ปัญหาจริงเกิดขึ้นเฉพาะแพลตฟอร์มที่ใช้คอมไพเลอร์เฉพาะและเฉพาะในกรณีที่เปิดใช้งานการเพิ่มประสิทธิภาพ ฉันลองหลายสิ่งหลายอย่างเพื่อทำให้เกิดปัญหาอีกครั้งและทำให้มันง่ายขึ้นสูงสุด นี่คือการแยกฟังก์ชั่นที่เรียกSerializeว่าจะใช้พารามิเตอร์บูลและคัดลอกสตริงtrueหรือfalseไปยังบัฟเฟอร์ปลายทางที่มีอยู่ ฟังก์ชั่นนี้จะอยู่ในการตรวจสอบรหัสหรือไม่ไม่มีทางที่จะบอกได้ว่าในความเป็นจริงอาจมีปัญหาหากพารามิเตอร์ bool เป็นค่าเริ่มต้นหรือไม่ // Zero-filled global buffer of 16 characters char destBuffer[16]; void Serialize(bool boolValue) { // Determine which string to print based on boolValue const char* whichString = boolValue ? "true" : "false"; // Compute the length of the string we …

6
LLVM คืออะไร
ฉันคอยฟัง LLVM อยู่ตลอดเวลา มันเป็น Perl แล้วก็อยู่ใน Haskell แล้วมีคนใช้มันในภาษาอื่นบ้างไหม? มันคืออะไร?
464 llvm 

9
สลับระหว่าง GCC และ Clang / LLVM โดยใช้ CMake
ฉันมีโครงการหลายโครงการที่สร้างโดยใช้ CMake และฉันต้องการที่จะสามารถสลับระหว่างการใช้ GCC หรือ Clang / LLVM เพื่อรวบรวมได้อย่างง่ายดาย ฉันเชื่อ (โปรดแก้ไขให้ฉันถ้าฉันเข้าใจผิด!) ที่จะใช้เสียงดังกราวฉันต้องตั้งค่าต่อไปนี้: SET (CMAKE_C_COMPILER "/usr/bin/clang") SET (CMAKE_C_FLAGS "-Wall -std=c99") SET (CMAKE_C_FLAGS_DEBUG "-g") SET (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG") SET (CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG") SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") SET (CMAKE_CXX_COMPILER "/usr/bin/clang++") SET (CMAKE_CXX_FLAGS "-Wall") SET (CMAKE_CXX_FLAGS_DEBUG "-g") SET (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELEASE "-O4 …
269 cmake  llvm  clang 

1
จะมีผลต่อการสร้างรหัส Delphi XEx สำหรับเป้าหมาย Android / ARM อย่างไร
อัพเดท 2017-05-17 ฉันไม่ทำงานให้กับ บริษัท ที่มีคำถามนี้มาแล้วและไม่สามารถเข้าถึง Delphi XEx ได้ ในขณะที่ฉันอยู่ที่นั่นปัญหาได้รับการแก้ไขโดยการโยกย้ายไปยัง FPC + GCC (Pascal + C) ผสมกับ NEON อินทรินซินส์สำหรับกิจวัตรบางอย่างที่สร้างความแตกต่าง (แนะนำให้ใช้ FPC + GCC เพราะช่วยให้สามารถใช้เครื่องมือมาตรฐานโดยเฉพาะอย่างยิ่ง Valgrind) หากมีใครสามารถสาธิตด้วยตัวอย่างที่น่าเชื่อถือว่าจริง ๆ แล้วพวกเขาสามารถสร้างรหัส ARM ที่ดีที่สุดจาก Delphi XEx ได้อย่างไรฉันยินดีที่จะตอบ . คอมไพเลอร์ Delphi ของ Embarcadero ใช้แบ็กเอนด์ LLVM เพื่อสร้างรหัส ARM ดั้งเดิมสำหรับอุปกรณ์ Android ฉันมีรหัส Pascal จำนวนมากที่ฉันต้องรวบรวมในแอปพลิเคชัน Android และฉันต้องการทราบวิธีการทำให้ Delphi สร้างรหัสที่มีประสิทธิภาพมากขึ้น …

5
วิธีการทำเสียงดังกราวรวบรวมเพื่อ llvm IR
ฉันต้องการเสียงดังกราวด์เพื่อรวบรวมC/C++รหัสของฉันเพื่อLLVMbytecode มากกว่าปฏิบัติการไบนารี ฉันจะบรรลุสิ่งนั้นได้อย่างไร และถ้าฉันได้รับLLVMbytecode ฉันจะนำมันไปใช้เพื่อคอมไพล์มันต่อไปยังไบนารีที่ปฏิบัติการได้ โดยทั่วไปฉันต้องการเพิ่มรหัสของตัวเองลงใน LLVM bytecode ก่อนที่จะคอมไพล์ไปยังโปรแกรมปฏิบัติการไบนารี
150 c  llvm  clang 

3
LLVM เทียบกับเสียงดังบน OS X
ฉันมีคำถามเกี่ยวกับ llvm, clang และ gcc บน OS X ความแตกต่างระหว่าง llvm-gcc 4.2, llvm 2.0 และ clang คืออะไร? ฉันรู้ว่าพวกเขาทั้งหมดสร้างขึ้นจาก llvm แต่มันแตกต่างกันอย่างไร? นอกจากคอมไพล์ได้เร็วขึ้นแล้ว llvm มีข้อดีกว่า gcc อย่างไร?
136 c++  c  gcc  llvm  clang 

4
WebAssembly (Wasm) สามารถคอมไพล์ภาษาอะไรได้บ้าง
WebAssembly (Wasm) สามารถคอมไพล์ภาษาอะไรได้บ้าง ฉันเชื่อว่าตอนนี้ C, C ++ และ Rust (ทดลอง) สามารถคอมไพล์ไปยัง WebAssembly ได้ด้วยแบ็กเอนด์คอมไพเลอร์ llvm ซึ่งมีภาษาเช่น Java, Swift และ C # ไม่ได้รับการสนับสนุนในขณะนี้ แต่เป็นตัวเลือกที่เป็นไปได้สำหรับการพัฒนาในอนาคต ฉันไม่เชื่อว่า JavaScript สามารถคอมไพล์ไปยัง Wasm ได้ https://github.com/WebAssembly/design/issues/219

2
เติมโค้ดได้เร็วขึ้นด้วยเสียงดังกริ๊ก
ฉันกำลังตรวจสอบการเร่งการเติมโค้ดที่เป็นไปได้ในขณะที่ใช้กลไกการเติมโค้ดของ clang ขั้นตอนที่อธิบายด้านล่างคือสิ่งที่ฉันพบในrtagsโดย Anders Bakken หน่วยการแปลถูกแยกวิเคราะห์โดยไฟล์การมอนิเตอร์ daemon สำหรับการเปลี่ยนแปลง สิ่งนี้ทำได้โดยเรียกclang_parseTranslationUnitและฟังก์ชันที่เกี่ยวข้อง ( reparse*, dispose*) clang_codeCompleteAtเมื่อผู้ใช้ร้องขอเสร็จสิ้นในเส้นที่กำหนดและคอลัมน์ในแฟ้มแหล่งที่มาที่ภูตผ่านการแปลหน่วยที่เก็บไว้สำหรับรุ่นที่บันทึกไว้ล่าสุดของแฟ้มแหล่งที่มาและแฟ้มแหล่งที่มาปัจจุบัน ( เอกสาร Clang CodeComplete ) ธงที่ส่งผ่านไปclang_parseTranslationUnit(จากCompletionThread :: กระบวนการสาย 271 ) CXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodesเป็น ธงที่ส่งผ่านไปclang_codeCompleteAt(จากCompletionThread :: กระบวนการสาย 305 ) CXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatternsเป็น เรียกร้องให้clang_codeCompleteAtช้ามาก - มันจะใช้เวลาประมาณ 3-5 clang_codeCompleteAtวินาทีเพื่อให้ได้เสร็จสิ้นแม้ในกรณีที่สถานที่ตั้งเสร็จสิ้นเป็นรหัสการเข้าถึงสมาชิกที่ถูกต้องเป็นส่วนหนึ่งของกรณีการใช้งานตั้งใจที่กล่าวถึงในเอกสารของ ดูเหมือนว่าวิธีนี้จะช้าเกินไปตามมาตรฐานการเติมรหัส IDE มีวิธีเร่งความเร็วนี้หรือไม่?

8
clang: จะแสดงรายการสถาปัตยกรรมเป้าหมายที่รองรับได้อย่างไร?
ตอนนี้ฉันสนใจ ARM โดยทั่วไปและเฉพาะเป้าหมาย iphone / android แต่ฉันแค่อยากรู้เพิ่มเติมเกี่ยวกับเสียงดังเพราะรู้สึกว่ามีบทบาทสำคัญในอีกหลายปีข้างหน้า ฉันเหนื่อย clang -cc1 --help|grep -i list clang -cc1 --help|grep arch|grep -v search clang -cc1 --help|grep target -triple <value> Specify target triple (e.g. i686-apple-darwin9) ฉันรู้ว่า clang มีพารามิเตอร์ -triplet แต่ฉันจะแสดงรายการค่าที่เป็นไปได้ทั้งหมดได้อย่างไร ฉันพบว่าเสียงดังกราวแตกต่างจาก gcc มากในแง่ของการรวบรวมข้ามในโลก GCC คุณควรมีไบนารีแยกต่างหากสำหรับทุกสิ่งเช่น PLATFORM_make หรือ PLATFORM_ld (i * 86-pc-cygwin i * 86 - …
98 clang  llvm 

13
LLVM C ++ IDE สำหรับ Windows
มี C / C ++ IDE สำหรับ Windows ซึ่งรวมเข้ากับคอมไพเลอร์ LLVM (และตัววิเคราะห์ Clang C / C ++) เช่นเดียวกับ Xcode สมัยใหม่หรือไม่ ฉันมี Dev-Cpp (ใช้ GCC ที่ล้าสมัย) และCode :: Blocks (กับ GCC บางส่วน) แต่ GCC ให้ข้อความแสดงข้อผิดพลาดที่คลุมเครือมาก ฉันต้องการรับข้อความแสดงข้อผิดพลาดที่เป็นมิตรกับผู้ใช้มากขึ้นจากส่วนหน้าเสียงดัง ใช่ Clang ไม่สามารถใช้กับโค้ด C ++ ที่ซับซ้อนได้ แต่ trunk Clang สามารถคอมไพล์ LLVM เองได้แล้ว ดังนั้นฉันจึงสงสัยว่ามี LLVM IDE ในการพัฒนาหรือในเวอร์ชันเบต้าหรือไม่ …
92 c++  windows  ide  llvm  clang 

4
ข้อผิดพลาดของเทมเพลตที่สับสน
ฉันเล่นกับเสียงดังมาระยะหนึ่งแล้วและฉันก็สะดุดกับ "test / SemaTemplate / depend-template-recover.cpp" (ในการแจกแจงเสียงดัง) ซึ่งควรให้คำแนะนำในการกู้คืนจากข้อผิดพลาดของเทมเพลต สิ่งทั้งหมดสามารถถอดออกเป็นตัวอย่างเล็กน้อยได้อย่างง่ายดาย: template<typename T, typename U, int N> struct X { void f(T* t) { // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}} t->f0<U>(); } }; ข้อความแสดงข้อผิดพลาดที่เกิดจากเสียงดังลั่น: tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template …
91 c++  templates  llvm  clang 

2
คำสั่ง PHI ทำอะไรได้บ้างและจะใช้อย่างไรใน LLVM
LLVM มีคำสั่งphiพร้อมคำอธิบายที่ค่อนข้างแปลก: คำสั่ง 'phi' ใช้เพื่อใช้โหนดφในกราฟ SSA ที่แสดงถึงฟังก์ชัน โดยทั่วไปแล้วจะใช้เพื่อใช้การแตกแขนง ถ้าฉันเข้าใจถูกต้องจำเป็นต้องทำให้การวิเคราะห์การพึ่งพาเป็นไปได้และในบางกรณีอาจช่วยหลีกเลี่ยงการโหลดที่ไม่จำเป็นได้ อย่างไรก็ตามยังยากที่จะเข้าใจว่ามันทำอะไรได้บ้าง ตัวอย่าง Kaleidoscope อธิบายได้ค่อนข้างดีสำหรับifกรณี อย่างไรก็ตามมันไม่ชัดเจนว่าจะใช้การดำเนินการเชิงตรรกะเช่น&&และ||. ถ้าฉันพิมพ์สิ่งต่อไปนี้ลงในคอมไพเลอร์llvm ออนไลน์ : void main1(bool r, bool y) { bool l = y || r; } หลายบรรทัดสุดท้ายทำให้ฉันสับสน: ; <label>:10 ; preds = %7, %0 %11 = phi i1 [ true, %0 ], [ %9, %7 ] …
91 llvm 

3
เหตุใด LLVM จึงจัดสรรตัวแปรซ้ำซ้อน
นี่คือไฟล์ C อย่างง่ายที่มีนิยาม enum และmainฟังก์ชั่น: enum days {MON, TUE, WED, THU}; int main() { enum days d; d = WED; return 0; } มัน transpiles เพื่อ LLVM IR ต่อไปนี้: define dso_local i32 @main() #0 { %1 = alloca i32, align 4 %2 = alloca i32, align 4 store i32 0, …
9 c  llvm  llvm-codegen 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.