Warum Clang eine Funktion auf 1 optimiert – und was Pointer-Provenance damit zu tun hat

Pointer Provenance in Rust vs. C++: Pointers Are Not Just Glorified Ints

Warum Clang eine Funktion auf 1 optimiert – und was Pointer-Provenance damit zu tun hat

Ein int* kann nicht zufällig auf dieselbe Adresse zeigen wie eine lokale Variable – das nimmt der Compiler an, weil der Zeiger nicht von ihr abgeleitet wurde. Diese verborgene Herkunftsinformation heißt Provenance und ist reine Compiler-Abstraktion, kein Datenfeld. Der Beitrag zeigt an LLVM IR, wie ein Cast nach uintptr_t in C++ die Provenance offenlegt und Optimierungen blockiert, während Rust mit addr(), with_addr() und without_provenance() die Absicht explizit macht – und Miri Verstöße aufdeckt.

Provenance ist im Kern eine verborgene Information darüber, aus welcher Allokation ein Zeiger stammt – und LLVM nutzt sie für Optimierungen.

Mehr von diesem Tag

2026-11-09