1e449edc5bdace60f9d754c32abc5459bc7d94a14Jordan Rose// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks,unix.Malloc -std=c++11 -fblocks -verify %s 2697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev// expected-no-diagnostics 3697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev 4697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsevnamespace std { 5697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev typedef __typeof__(sizeof(int)) size_t; 6697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev} 7697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct X {}; 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid *operator new(std::size_t, X, ...); 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid *operator new[](std::size_t, X, ...); 12697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev 13697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsevvoid testGlobalCustomVariadicNew() { 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines X x; 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines void *p1 = operator new(0, x); // no warn 17697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines void *p2 = operator new[](0, x); // no warn 19697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines int *p3 = new (x) int; // no warn 21697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines int *p4 = new (x) int[0]; // no warn 23697462881c4b9b704c7859f4bab0a6116c684bb1Anton Yartsev} 24