[ 
https://issues.apache.org/jira/browse/MAPREDUCE-5977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14096582#comment-14096582
 ] 

Todd Lipcon commented on MAPREDUCE-5977:
----------------------------------------

Have you done any simple before/after performance check of the impact of 
-fno-strict-aliasing? I generally support the flag, but would be good to have 
some assurance that it's not hurting any hot path. If it is we can manually add 
'restrict' keywords where necessary. Another option is to fix the warnings 
where they show up by changing type punning to memcpy (which generally gets 
optimized to simple loads/stores if it has a fixed length)

{code}
     }
@@ -196,7 +194,6 @@ void MeasureSingleFileLz4(const string & path, 
CompressResult & total, size_t bl
     startTime = t.now();
     for (int i = 0; i < times; i++) {
 //      memset(dest, 0, currentblocksize+8);
-      int osize = LZ4_uncompress(outputBuffer, dest, currentblocksize);
 //      printf("%016llx blocksize: %lu\n", 
bswap64(*(uint64_t*)(dest+currentblocksize)), currentblocksize);
     }
{code}
Removing this call seems problematic, given this is purporting to benchmark LZO 
decompression and you just removed the call to decompress :)

Maybe you want to either cast the call to void (to get rid of the warning), or 
perform some kind of assertion on 'osize' so it's not unused?

----

{code}
   while (ir->nextPartition()) {
-    const char * key, *value;
+    const char * key;
     uint32_t keyLen, valueLen;
     while (NULL != (key = ir->nextKey(keyLen))) {
-      value = ir->value(valueLen);
+      ir->value(valueLen);
     }
   }
{code}

Again, for a benchmark, this seem suspicious. The compiler might well elide the 
ir->value() call if it figures out there is no side effect. One trick I usually 
use here is to do something like:

{code}
   int sum = 0;
   while (ir->nextPartition()) {
     const char * key, *value;
     uint32_t keyLen, valueLen;
     while (NULL != (key = ir->nextKey(keyLen))) {
       value = ir->value(valueLen);
       sum += value[0];
     }
   }
   // Use the result so that the value() calls don't get optimized out.
   ASSERT_NE(0xdeadbeef, sum);
{code}

(or if you don't like assert, another option is to log the result -- anything 
so that gcc knows that it can't elide the actual memory accesses in the loop)



> Fix or suppress native-task gcc warnings
> ----------------------------------------
>
>                 Key: MAPREDUCE-5977
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5977
>             Project: Hadoop Map/Reduce
>          Issue Type: Sub-task
>          Components: task
>            Reporter: Todd Lipcon
>            Assignee: Manu Zhang
>         Attachments: gcc_compile.log, mapreduce-5977-v2.txt, 
> mapreduce-5977.txt
>
>
> Currently, building the native task code on gcc 4.8 has a fair number of 
> warnings. We should fix or suppress them so that new warnings are easier to 
> see.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to