Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
为什么此代码生成的程序集比等效的 C++/Clang 多得多? [关闭]
Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我编写了一个简单的 C 函数来检查编译器优化 bool f1 bool a bool b return a a b 之后我检查了
Optimization
Rust
llvmcodegen
C++ 标准是否允许未初始化的 bool 导致程序崩溃?
我知道一个 未定义的行为 C 几乎可以让编译器做任何它想做的事情 然而 我遇到了一次令我惊讶的崩溃 因为我认为代码足够安全 在这种情况下 真正的问题仅发生在使用特定编译器的特定平台上 并且仅在启用优化的情况下发生 我尝试了几种方法来重现问题
c
LLVM
undefinedbehavior
ABI
llvmcodegen
为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?
我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
c
Assembly
x8664
compileroptimization
llvmcodegen
为什么 clang 发出 32 位 float ps 指令来获取 64 位 double 的绝对值?
clang为什么会转fabs double into vandps代替vandpd 就像海湾合作委员会那样 示例来自编译器资源管理器 https gcc godbolt org z TsfW9hrjT include
Assembly
x86
Clang
avx
llvmcodegen
带有 LLVM 的 C ABI
我有一个用 LLVM 编写的编译器 我希望提高 ABI 合规性 例如 我发现很难在 Windows x86 或 Linux 上实际找到 C ABI 的规范文档 我发现的那些用 RAX EAX 等术语解释它 而不是我可以使用的 IR 术语 到
c
LLVM
ABI
llvmcodegen
为什么 Rust 优化器不删除那些无用的指令(在 Godbolt Compiler Explorer 上测试)?
我想看一下一个微小的 Rust 函数的汇编输出 pub fn double n u8 gt u8 n n 我用的是Godbolt 编译器资源管理器 https godbolt org g XJhjcB生成并查看程序集 使用 O当然是旗帜 它
Assembly
Rust
x8664
llvmcodegen
LLVM 的整数类型
LLVM语言将整数类型指定为iN 其中N是整数的位宽 范围从1到2 23 1 根据 http llvm org docs LangRef html integer type http llvm org docs LangRef html i
types
LLVM
llvmcodegen
Rust 有一天能在对象移动过程中优化掉按位复制吗?
考虑片段 struct Foo dummy u8 65536 fn bar foo Foo println p foo fn main let o Foo dummy 42u8 65536 println p o bar o 一个典型的该计
Rust
movesemantics
llvmcodegen
发布模式下安全 Rust 中的有符号整数溢出是否被视为未定义行为?
Rust 在调试和发布模式下以不同的方式处理有符号整数溢出 当这种情况发生时 Rust 在调试模式下会发生恐慌 而在发布模式下则默默地执行二进制补码包装 据我所知 C C 将有符号整数溢出视为未定义行为 部分原因是 在 C 标准化时 表示有
Rust
integeroverflow
llvmcodegen