public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Chris Dearman <chris@mips.com>
To: ltp-list@lists.sourceforge.net
Subject: [LTP] [PATCH] Avoid compiler optimisation of malloc calls
Date: Wed, 17 Oct 2012 10:35:35 -0700	[thread overview]
Message-ID: <20121017173535.11574.18883.stgit@localhost6.localdomain6> (raw)
In-Reply-To: <507D6C63.5040704@mips.com>

[-- Attachment #1: Type: text/plain, Size: 349 bytes --]

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 <chris@mips.com>
---
 .../conformance/interfaces/pthread_cond_init/4-1.c |   19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

[-- Attachment #2: avoid-compiler-optimisation-of.patch --]
[-- Type: text/plain, Size: 1266 bytes --]

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);

[-- Attachment #3: Type: text/plain, Size: 240 bytes --]

------------------------------------------------------------------------------
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

[-- Attachment #4: Type: text/plain, Size: 155 bytes --]

_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

  parent reply	other threads:[~2012-10-17 17:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-16 14:17 [LTP] [PATCH] Avoid compiler optimisation of malloc calls Chris Dearman
2012-10-17 16:04 ` chrubis
2012-10-17 17:35 ` Chris Dearman [this message]
2012-10-18  1:36   ` Wanlong Gao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121017173535.11574.18883.stgit@localhost6.localdomain6 \
    --to=chris@mips.com \
    --cc=ltp-list@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox