Subzero: Enable errors for unused parameters.

Uses pragmas when including problematic LLVM headers, so that clang
doesn't warn about unused parameters -- a rampant problem in the LLVM
code.  This way, we can increase clang's pickiness on Subzero code,
and also not drown in LLVM warnings.

BUG= none
R=jpp@chromium.org, jvoung@chromium.org

Review URL: https://codereview.chromium.org/1217433002
diff --git a/Makefile.standalone b/Makefile.standalone
index 77c603c..71f87c2 100644
--- a/Makefile.standalone
+++ b/Makefile.standalone
@@ -162,7 +162,7 @@
 
 BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \
 	-fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \
-	-Wno-error=unused-parameter $(CXX_EXTRA)
+	$(CXX_EXTRA)
 
 CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \
 	$(STDLIB_FLAGS)
diff --git a/src/IceClFlags.cpp b/src/IceClFlags.cpp
index 130f45a..b5893c1 100644
--- a/src/IceClFlags.cpp
+++ b/src/IceClFlags.cpp
@@ -16,7 +16,11 @@
 #include "IceClFlags.h"
 
 #include "IceClFlagsExtra.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/Support/CommandLine.h"
+#pragma clang diagnostic pop
 
 namespace cl = llvm::cl;
 
diff --git a/src/IceClFlagsExtra.h b/src/IceClFlagsExtra.h
index 37f87de..8d5b118 100644
--- a/src/IceClFlagsExtra.h
+++ b/src/IceClFlagsExtra.h
@@ -15,7 +15,11 @@
 #define SUBZERO_SRC_ICECLFLAGSEXTRA_H
 
 #include "IceDefs.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/IRReader/IRReader.h"
+#pragma clang diagnostic pop
 
 namespace Ice {
 
diff --git a/src/IceCompileServer.cpp b/src/IceCompileServer.cpp
index 3b828cc..d36cdfd 100644
--- a/src/IceCompileServer.cpp
+++ b/src/IceCompileServer.cpp
@@ -17,6 +17,9 @@
 #include "IceClFlagsExtra.h"
 #include "IceELFStreamer.h"
 #include "IceGlobalContext.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 // Include code to handle converting textual bitcode records to binary (for
 // INPUT_IS_TEXTUAL_BITCODE).
 #include "llvm/Bitcode/NaCl/NaClBitcodeMungeUtils.h"
@@ -25,6 +28,7 @@
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/StreamingMemoryObject.h"
+#pragma clang diagnostic pop
 
 #include <fstream>
 #include <iostream>
diff --git a/src/IceCompiler.cpp b/src/IceCompiler.cpp
index ff17d84..7764b71 100644
--- a/src/IceCompiler.cpp
+++ b/src/IceCompiler.cpp
@@ -23,12 +23,16 @@
 #include "IceConverter.h"
 #include "IceELFObjectWriter.h"
 #include "PNaClTranslator.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"
 #include "llvm/IRReader/IRReader.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/StreamingMemoryObject.h"
+#pragma clang diagnostic pop
 
 namespace Ice {
 
diff --git a/src/IceConverter.cpp b/src/IceConverter.cpp
index d726241..d389a02 100644
--- a/src/IceConverter.cpp
+++ b/src/IceConverter.cpp
@@ -24,6 +24,9 @@
 #include "IceTargetLowering.h"
 #include "IceTypes.h"
 #include "IceTypeConverter.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/IR/Constant.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/DataLayout.h"
@@ -31,6 +34,7 @@
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"
+#pragma clang diagnostic pop
 
 // TODO(kschimpf): Remove two namespaces being visible at once.
 using namespace llvm;
diff --git a/src/IceGlobalContext.cpp b/src/IceGlobalContext.cpp
index 9589b53..450fbba 100644
--- a/src/IceGlobalContext.cpp
+++ b/src/IceGlobalContext.cpp
@@ -24,7 +24,11 @@
 #include "IceTargetLowering.h"
 #include "IceTimerTree.h"
 #include "IceTypes.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/Support/Timer.h"
+#pragma clang diagnostic pop
 
 #include <algorithm> // max()
 #include <cctype> // isdigit(), isupper()
diff --git a/src/IceGlobalInits.h b/src/IceGlobalInits.h
index 48658e1..08f4fe3 100644
--- a/src/IceGlobalInits.h
+++ b/src/IceGlobalInits.h
@@ -20,9 +20,13 @@
 #include "IceDefs.h"
 #include "IceGlobalContext.h"
 #include "IceTypes.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/Bitcode/NaCl/NaClBitcodeParser.h" // for NaClBitcodeRecord.
 #include "llvm/IR/CallingConv.h"
 #include "llvm/IR/GlobalValue.h" // for GlobalValue::LinkageTypes.
+#pragma clang diagnostic pop
 
 #include <memory>
 #include <utility>
diff --git a/src/IceTimerTree.cpp b/src/IceTimerTree.cpp
index de84ea5..879f06e 100644
--- a/src/IceTimerTree.cpp
+++ b/src/IceTimerTree.cpp
@@ -15,7 +15,11 @@
 #include "IceTimerTree.h"
 
 #include "IceDefs.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/Support/Timer.h"
+#pragma clang diagnostic pop
 
 namespace Ice {
 
diff --git a/src/PNaClTranslator.cpp b/src/PNaClTranslator.cpp
index 06b3bee..5382bcc 100644
--- a/src/PNaClTranslator.cpp
+++ b/src/PNaClTranslator.cpp
@@ -23,6 +23,9 @@
 #include "IceGlobalInits.h"
 #include "IceInst.h"
 #include "IceOperand.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/Bitcode/NaCl/NaClBitcodeDecoders.h"
 #include "llvm/Bitcode/NaCl/NaClBitcodeDefs.h"
@@ -32,6 +35,7 @@
 #include "llvm/Support/Format.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/raw_ostream.h"
+#pragma clang diagnostic pop
 
 namespace {
 using namespace llvm;
diff --git a/unittest/BitcodeMunge.h b/unittest/BitcodeMunge.h
index f257d21..3586909 100644
--- a/unittest/BitcodeMunge.h
+++ b/unittest/BitcodeMunge.h
@@ -15,7 +15,10 @@
 #ifndef SUBZERO_UNITTEST_BITCODEMUNGE_H
 #define SUBZERO_UNITTEST_BITCODEMUNGE_H
 
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/Bitcode/NaCl/NaClBitcodeMunge.h"
+#pragma clang diagnostic pop
 
 #include "IceClFlags.h"
 
diff --git a/unittest/IceParseInstsTest.cpp b/unittest/IceParseInstsTest.cpp
index 74603ce..d58ad5a 100644
--- a/unittest/IceParseInstsTest.cpp
+++ b/unittest/IceParseInstsTest.cpp
@@ -9,9 +9,12 @@
 
 #include <string>
 
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-parameter"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/Bitcode/NaCl/NaClBitcodeParser.h"
 #include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h"
+#pragma clang diagnostic pop
 
 #include "BitcodeMunge.h"
 #include "unittests/Bitcode/NaClMungeTest.h"