คำถามติดแท็ก compiler-bug

3
ข้อผิดพลาด GCC ที่เป็นไปได้เมื่อส่งคืน struct จากฟังก์ชัน
ฉันเชื่อว่าฉันพบข้อผิดพลาดใน GCC ในขณะที่ใช้ PCG PRNG ของ O'Neill ( รหัสเริ่มต้นในคอมไพเลอร์ Explorer ของ Godbolt ) หลังจากการคูณoldstateด้วยMULTIPLIER(ผลลัพธ์ที่เก็บไว้ใน rdi) GCC จะไม่เพิ่มผลลัพธ์INCREMENTนั้นย้ายINCREMENTไปยัง rdx แทนซึ่งจะถูกใช้เป็นค่าส่งคืนของ rand32_ret.state ตัวอย่างที่ทำซ้ำได้ขั้นต่ำ ( Compiler Explorer ): #include <stdint.h> struct retstruct { uint32_t a; uint64_t b; }; struct retstruct fn(uint64_t input) { struct retstruct ret; ret.a = 0; ret.b = input * …
133 c  gcc  assembly  x86-64  compiler-bug 

2
ในโหมดเผยแพร่ลักษณะการทำงานของโค้ดไม่เป็นไปตามที่คาดไว้
รหัสต่อไปนี้สร้างผลลัพธ์ที่แตกต่างกันภายใต้โหมดดีบักและโหมดเผยแพร่ (โดยใช้ Visual Studio 2008): int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if( result > 255 ) { result = 255; } printf("i:%2d, result = %3d\n", i, result) ; } return 0; } ผลลัพธ์ของโหมดดีบักซึ่งเป็นไปตามที่คาดไว้: …

6
(this == null) ใน C #!
เนื่องจากข้อบกพร่องที่ได้รับการแก้ไขใน C # 4 โปรแกรมต่อไปนี้จะพิมพ์trueออกมา (ลองใช้งานใน LINQPad) void Main() { new Derived(); } class Base { public Base(Func<string> valueMaker) { Console.WriteLine(valueMaker()); } } class Derived : Base { string CheckNull() { return "Am I null? " + (this == null); } public Derived() : base(() => CheckNull()) { } } …

1
เหตุใดรหัส Haskell นี้จึงทำงานช้าลงด้วย -O
ชิ้นส่วนของรหัส Haskell นี้จะทำงานมากช้า-Oแต่-Oควรจะไม่เป็นอันตราย ใครช่วยบอกทีว่าเกิดอะไรขึ้น? หากเป็นเรื่องสำคัญมันเป็นความพยายามที่จะแก้ปัญหานี้และใช้การค้นหาแบบไบนารีและโครงสร้างส่วนต่อเนื่อง import Control.Monad import Data.Array data Node = Leaf Int -- value | Branch Int Node Node -- sum, left child, right child type NodeArray = Array Int Node -- create an empty node with range [l, r) create :: Int -> Int -> Node create …

1
ปัญหาคอมไพเลอร์ C ++ พร้อมโครงสร้างในคลาสเทมเพลต
รหัสต่อไปนี้ไม่ได้รวบรวมกับ gcc หรือเสียงดังกราว template<class T> class foo{}; template<class T> class template_class_with_struct { void my_method() { if(this->b.foo < 1); }; struct bar { long foo; } b; }; ข้อความแสดงข้อผิดพลาดคือ error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class foo' 8 | if(this->b.foo < 1); ข้อผิดพลาดเกิดจากคลาส templat …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.