clang understands the malloc library call and can optimise calls to
it. In particular it will avoid calling malloc completely if it
detects that the result is not used.
Signed-off-by: Chris Dearman <[email protected]>
---
.../conformance/interfaces/pthread_cond_init/4-1.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git
a/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_init/4-1.c
b/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_init/4-1.c
index 287fda1..06accd6 100644
---
a/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_init/4-1.c
+++
b/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_init/4-1.c
@@ -50,7 +50,7 @@
#define ERR_MSG(f, rc) printf("Failed: func: %s rc: %s (%u)\n", \
f, strerror(rc), rc);
-/* Max memory for child is 81B */
+/* Max memory for child is 1MB */
#define MAX_MEM ((1<<20))
/*
@@ -59,8 +59,8 @@
*/
static void child(void)
{
- char *curr;
- char *prev = NULL;
+ void *curr;
+ void *prev = NULL;
struct rlimit rl;
pthread_cond_t cond;
pthread_condattr_t attr;
@@ -76,10 +76,15 @@ static void child(void)
exit(PTS_UNRESOLVED);
}
- /* Consume all memory we can */
- do {
- curr = malloc(1);
- } while (curr);
+ /*
+ * Consume all memory we can
+ * It's importamt to use the malloc() return value in a
+ * meaningful way to bypass potential compiler optimisations.
+ */
+ while ((curr = malloc(sizeof(void *)))) {
+ *(void **)curr = prev;
+ prev = curr;
+ }
if (errno != ENOMEM) {
ERR_MSG("malloc()", errno);
exit(PTS_UNRESOLVED);
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list