int main (int argc, char *argv[]) { GThread *threads[N_THREADS]; int i; void *p; #ifdef __SYMBIAN32__ g_log_set_handler (NULL, G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, &mrtLogHandler, NULL); g_set_print_handler(mrtPrintHandler); #endif /*__SYMBIAN32__*/ /* test simple initializer */ initializer1(); initializer1(); /* test pointer initializer */ /*void */p = initializer2(); g_assert (p == &dummy_value); p = initializer2(); g_assert (p == &dummy_value); /* setup threads */ g_thread_init (NULL); tmutex = g_mutex_new (); tcond = g_cond_new (); /* start multiple threads for initializer3() */ g_mutex_lock (tmutex); for (i = 0; i < N_THREADS; i++) threads[i] = g_thread_create (tmain_call_initializer3, 0, FALSE, NULL); g_mutex_unlock (tmutex); /* concurrently call initializer3() */ g_cond_broadcast (tcond); /* loop until all threads passed the call to initializer3() */ while (g_atomic_int_get (&thread_call_count) < i) { if (rand() % 2) g_thread_yield(); /* concurrent shuffling for single core */ else g_usleep (1000); /* concurrent shuffling for multi core */ g_cond_broadcast (tcond); } /* call multiple (unoptimized) initializers from multiple threads */ g_mutex_lock (tmutex); g_atomic_int_set (&thread_call_count, 0); for (i = 0; i < N_THREADS; i++) g_thread_create (stress_concurrent_initializers, 0, FALSE, NULL); g_mutex_unlock (tmutex); while (g_atomic_int_get (&thread_call_count) < 256 * 4 * N_THREADS) g_usleep (50 * 1000); /* wait for all 5 threads to complete */ #if __SYMBIAN32__ testResultXml("onceinit"); #endif /* EMULATOR */ return 0; }
int param_not_initialized_by_func() { int p; // expected-note {{'p' declared without an initial value}} int out = initializer1(p, 0); // expected-note{{Calling 'initializer1'}} // expected-note@-1{{Returning from 'initializer1'}} return p; // expected-note{{Undefined or garbage value returned to caller}} // expected-warning@-1{{Undefined or garbage value returned to caller}} }
int main (int argc, char *argv[]) { GThread *threads[N_THREADS]; int i; /* test simple initializer */ initializer1(); initializer1(); /* test pointer initializer */ void *p = initializer2(); g_assert (p == &dummy_value); p = initializer2(); g_assert (p == &dummy_value); /* setup threads */ g_thread_init (NULL); /* start multiple threads for initializer3() */ g_mutex_lock (&tmutex); for (i = 0; i < N_THREADS; i++) threads[i] = g_thread_create (tmain_call_initializer3, 0, FALSE, NULL); g_mutex_unlock (&tmutex); /* concurrently call initializer3() */ g_cond_broadcast (&tcond); /* loop until all threads passed the call to initializer3() */ while (g_atomic_int_get (&thread_call_count) < i) { if (rand() % 2) g_thread_yield(); /* concurrent shuffling for single core */ else g_usleep (1000); /* concurrent shuffling for multi core */ g_cond_broadcast (&tcond); } /* call multiple (unoptimized) initializers from multiple threads */ g_mutex_lock (&tmutex); g_atomic_int_set (&thread_call_count, 0); for (i = 0; i < N_THREADS; i++) g_thread_create (stress_concurrent_initializers, 0, FALSE, NULL); g_mutex_unlock (&tmutex); while (g_atomic_int_get (&thread_call_count) < 256 * 4 * N_THREADS) g_usleep (50 * 1000); /* wait for all 5 threads to complete */ return 0; }