/*
- * Copyright (C) - 2017 Francis Deslauriers <francis.deslauriers@efficios.com>
+ * Copyright (C) 2017 Francis Deslauriers <francis.deslauriers@efficios.com>
*
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation; version 2.1 of the License.
+ * SPDX-License-Identifier: LGPL-2.1-only
*
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <fcntl.h>
* events generated by our test process only.
*/
+#if defined(__clang__)
+#define nooptimization __attribute__((noinline)) __attribute__((optnone))
+#else
+#define nooptimization __attribute__((noinline)) __attribute__((optimize(0)))
+#endif
+
volatile int val = 0;
-long __attribute__ ((noinline))
+long nooptimization my_gettid(void);
+long nooptimization
my_gettid(void)
{
long ret;
return ret;
}
-int __attribute__ ((noinline))
+int nooptimization fct_c(void);
+int nooptimization
fct_c(void)
{
return my_gettid();
}
-int __attribute__ ((noinline))
+int nooptimization fct_b(void);
+int nooptimization
fct_b(void)
{
val += fct_c();
return val;
}
-int __attribute__ ((noinline))
+int nooptimization fct_a(void);
+int nooptimization
fct_a(void)
{
val += fct_b();