Questions tagged «compiler-bug»

3
从函数返回结构时可能的GCC错误
我相信我在实施O'Neill的PCG PRNG时发现了GCC中的错误。(Godbolt的Compiler Explorer上的初始代码) 相乘后oldstate通过MULTIPLIER,(存储在RDI结果),GCC不该结果添加到INCREMENT,movabs'ing 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 * 11111111111 + 111111111111; return ret; } 生成的程序集(GCC 9.2,x86_64,-O3): fn: movabs rdx, 11111111111 # multiplier constant (doesn't fit in …
133 c  gcc  assembly  x86-64  compiler-bug 


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()) { } } 在VS2008中,在发布模式下,它将引发InvalidProgramException。(在调试模式下,它可以正常工作) 在VS2010 Beta 2中,它不会编译(我没有尝试过Beta 1)。我了解到这很难 还有其他任何方法可以this …

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 l r | l …

4
为什么Java 5+中的volatile不能确保另一个线程的可见性?
根据: http://www.ibm.com/developerworks/library/j-jtp03304/ 在新的内存模型下,当线程A写入易失性变量V,而线程B从V读取时,现在保证了在写入V时A可见的任何变量值对B可见。 互联网上的许多地方都指出,以下代码永远不应显示“错误”: public class Test { volatile static private int a; static private int b; public static void main(String [] args) throws Exception { for (int i = 0; i < 100; i++) { new Thread() { @Override public void run() { int tt = b; // makes …

1
模板类中struct的C ++编译器问题
以下代码无法使用gcc或clang进行编译。 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); 该错误是由模板类foo引起的。当写<=而不是<1时,它也会编译。 任何提示表示赞赏吗? CompilerExplorer链接https://godbolt.org/z/v6Tygo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.