atomic_store.pass.cpp revision cedb7fcc10556aaf4302917913c672b1bc6a1db0
1926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)//===----------------------------------------------------------------------===// 2926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// 3926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// The LLVM Compiler Infrastructure 4926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// 5926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open 6926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details. 7926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// 8926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)//===----------------------------------------------------------------------===// 9926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// 10926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// This test uses new symbols that were not defined in the libc++ shipped on 11926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// darwin11 and darwin12: 12926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// XFAIL: with_system_lib=x86_64-apple-darwin11 13926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// XFAIL: with_system_lib=x86_64-apple-darwin12 14926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 15926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// <memory> 16926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 17926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// shared_ptr 18926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 19926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// template <class T> 20926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// void 21926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// atomic_store(shared_ptr<T>* p, shared_ptr<T> r) 22926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 23926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include <memory> 24926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include <cassert> 25926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 26926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)int main() 27926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 28926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#if __has_feature(cxx_atomic) 29591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 30591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch std::shared_ptr<int> p; 31591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch std::shared_ptr<int> r(new int(3)); 32591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch std::atomic_store(&p, r); 33591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch assert(*p == *r); 34926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 35926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#endif 36926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 37926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)