atomic_load.pass.cpp revision 5fec82dc0db3623546038e4a86baa44f749e554f
16e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner//===----------------------------------------------------------------------===// 26e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// 36e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// The LLVM Compiler Infrastructure 46e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// 57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// This file is dual licensed under the MIT and the University of Illinois Open 67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// Source Licenses. See LICENSE.TXT for details. 76e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// 86e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner//===----------------------------------------------------------------------===// 96e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 106e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// <memory> 116e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 126e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// shared_ptr 136e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner 146e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// template <class T> 156e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// shared_ptr<T> 166e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner// atomic_load(const shared_ptr<T>* p) 17ac5802bca0285eee49c1c372846552823d819181Benjamin Kramer 18dd9d38d57bbd2161e04af90a9e03011afb039b16Chandler Carruth#include <memory> 19398b40671b13018f88371b74822fa8ee2638577eOwen Anderson#include <cassert> 2081cf4325698b48b02eddab921ac333c7f25005c3Jeffrey Yasskin 2181cf4325698b48b02eddab921ac333c7f25005c3Jeffrey Yasskinint main() 22fb3af88ba75898896714d49c608b8daa4f106636Dan Gohman{ 23476b242fe7a61e5f9ac6214b0bc5c680d24f152eNick Lewycky#if __has_feature(cxx_atomic) 24724f6751442e2006856a9365ef3d3bc6f1b31c98Chris Lattner { 25724f6751442e2006856a9365ef3d3bc6f1b31c98Chris Lattner std::shared_ptr<int> p(new int(3)); 26724f6751442e2006856a9365ef3d3bc6f1b31c98Chris Lattner std::shared_ptr<int> q = std::atomic_load(&p); 276e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner assert(*q == *p); 28dd9d38d57bbd2161e04af90a9e03011afb039b16Chandler Carruth } 29345b378309eabd74a7a43f095dca9a4894bc371eDuncan Sands#endif 30d06c59821a1ca0191ea8a326a18509808a02ed03Torok Edwin} 316e94c00ab29e654125e845f3bce692a3764c1c11Chris Lattner