diff --git a/utils/ccc-analyzer b/utils/ccc-analyzer
index 73cc47b..e8a9f6f 100755
--- a/utils/ccc-analyzer
+++ b/utils/ccc-analyzer
@@ -22,6 +22,10 @@
 
 my $CC = $ENV{'CCC_CC'};
 if (!defined $CC) { $CC = "gcc"; }
+
+my $ReportFailures = $ENV{'CCC_REPORT_FAILURES'};
+if (!defined $ReportFailures) { $ReportFailures = 1; }
+
 my $CleanupFile;
 my $ResultFile;
 
@@ -225,55 +229,57 @@
   my $Result = $?;
 
   # Did the command die because of a signal?
-  if ($Result & 127 and $Cmd eq $ClangCC and defined $HtmlDir) {
-    ProcessClangFailure($ClangCC, $Lang, $file, \@CmdArgsSansAnalyses, $HtmlDir,
-                        "Crash", $ofile);
-  }
-  elsif ($Result) {
-    if ($IncludeParserRejects && !($file =~/conftest/)) {
-      ProcessClangFailure($ClangCC, $Lang, $file, \@CmdArgsSansAnalyses, $HtmlDir,
-                          $ParserRejects, $ofile);
+  if ($ReportFailures) {
+    if ($Result & 127 and $Cmd eq $ClangCC and defined $HtmlDir) {
+      ProcessClangFailure($ClangCC, $Lang, $file, \@CmdArgsSansAnalyses,
+                          $HtmlDir, "Crash", $ofile);
     }
-  }
-  else {
-    # Check if there were any unhandled attributes.
-    if (open(CHILD, $ofile)) {
-      my %attributes_not_handled;
-      
-      # Don't flag warnings about the following attributes that we
-      # know are currently not supported by Clang.
-      $attributes_not_handled{"cdecl"} = 1;
-      
-      my $ppfile;
-      while (<CHILD>) {
-        next if (! /warning: '([^\']+)' attribute ignored/);
-
-        # Have we already spotted this unhandled attribute?
-        next if (defined $attributes_not_handled{$1});
-        $attributes_not_handled{$1} = 1;
-        
-        # Get the name of the attribute file.
-        my $dir = "$HtmlDir/failures";
-        my $afile = "$dir/attribute_ignored_$1.txt";
-        
-        # Only create another preprocessed file if the attribute file
-        # doesn't exist yet.
-        next if (-e $afile);
-        
-        # Add this file to the list of files that contained this attribute.
-        # Generate a preprocessed file if we haven't already.
-        if (!(defined $ppfile)) {
-          $ppfile = ProcessClangFailure($ClangCC, $Lang, $file,
-                                        \@CmdArgsSansAnalyses,
-                                        $HtmlDir, $AttributeIgnored, $ofile);
-        }
-
-        mkpath $dir;
-        open(AFILE, ">$afile");
-        print AFILE "$ppfile\n";
-        close(AFILE);
+    elsif ($Result) {
+      if ($IncludeParserRejects && !($file =~/conftest/)) {
+        ProcessClangFailure($ClangCC, $Lang, $file, \@CmdArgsSansAnalyses,
+                            $HtmlDir, $ParserRejects, $ofile);
       }
-      close CHILD;
+    }
+    else {
+      # Check if there were any unhandled attributes.
+      if (open(CHILD, $ofile)) {
+        my %attributes_not_handled;
+      
+        # Don't flag warnings about the following attributes that we
+        # know are currently not supported by Clang.
+        $attributes_not_handled{"cdecl"} = 1;
+      
+        my $ppfile;
+        while (<CHILD>) {
+          next if (! /warning: '([^\']+)' attribute ignored/);
+
+          # Have we already spotted this unhandled attribute?
+          next if (defined $attributes_not_handled{$1});
+          $attributes_not_handled{$1} = 1;
+        
+          # Get the name of the attribute file.
+          my $dir = "$HtmlDir/failures";
+          my $afile = "$dir/attribute_ignored_$1.txt";
+        
+          # Only create another preprocessed file if the attribute file
+          # doesn't exist yet.
+          next if (-e $afile);
+        
+          # Add this file to the list of files that contained this attribute.
+          # Generate a preprocessed file if we haven't already.
+          if (!(defined $ppfile)) {
+            $ppfile = ProcessClangFailure($ClangCC, $Lang, $file,
+                                          \@CmdArgsSansAnalyses,
+                                          $HtmlDir, $AttributeIgnored, $ofile);
+          }
+
+          mkpath $dir;
+          open(AFILE, ">$afile");
+          print AFILE "$ppfile\n";
+          close(AFILE);
+        }
+        close CHILD;
+      }
     }
   }
   
