Rust와 C++의 포인터 프로버넌스: 포인터는 단순한 정수가 아니다
Pointer Provenance in Rust vs. C++: Pointers Are Not Just Glorified Ints

포인터 프로버넌스는 각 포인터가 어떤 할당에서 비롯되었는지 추적하는 컴파일러 내부 개념으로, LLVM이 최적화에 활용한다. C++에서 uintptr_t로 캐스팅하면 프로버넌스가 노출되어 최적화가 포기되지만, Rust는 addr(), with_addr(), without_provenance() 같은 API로 의도를 명시할 수 있다. 실험에서는 Rust도 최적화가 이뤄지지 않았지만, Miri가 규칙을 강제하고 버그를 잡아준다는 점에서 가치가 있다.
포인터 프로버넌스는 간단히 말해 포인터가 어떤 할당에서 비롯되었는지를 추적하는 숨겨진 정보로, LLVM이 최적화에 사용한다.