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