10231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov//===-- msandr_test_so.cc ------------------------------------------------===// 20231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// 30231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// The LLVM Compiler Infrastructure 40231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// 50231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// This file is distributed under the University of Illinois Open Source 60231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// License. See LICENSE.TXT for details. 70231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// 80231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov//===----------------------------------------------------------------------===// 90231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// 100231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// This file is a part of MemorySanitizer. 110231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// 120231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov// MemorySanitizer unit tests. 130231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov//===----------------------------------------------------------------------===// 140231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov 150231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov#include "msandr_test_so.h" 160231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov 170231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanovvoid dso_memfill(char* s, unsigned n) { 180231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov for (unsigned i = 0; i < n; ++i) 190231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov s[i] = i; 200231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov} 210231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov 220231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanovint dso_callfn(int (*fn)(void)) { 230231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov volatile int x = fn(); 240231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov return x; 250231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov} 260231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov 270231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanovint dso_callfn1(int (*fn)(long long, long long, long long)) { //NOLINT 280231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov volatile int x = fn(1, 2, 3); 290231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov return x; 300231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov} 310231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov 320231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanovint dso_stack_store(void (*fn)(int*, int*), int x) { 330231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov int y = x + 1; 340231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov fn(&x, &y); 350231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov return y; 360231c50f42e735739041f3b4b4ce17e1742bed69Evgeniy Stepanov} 3712c46937db2a5ab9237ce314c3f3a83636e8a575Evgeniy Stepanov 3812c46937db2a5ab9237ce314c3f3a83636e8a575Evgeniy Stepanovvoid break_optimization(void *x) {} 39