diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java b/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java
index 8717ee0..0fb9de3 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java
@@ -43,11 +43,13 @@
 import com.google.gwt.dev.jjs.ast.JStatement;
 import com.google.gwt.dev.jjs.ast.JType;
 import com.google.gwt.dev.jjs.ast.JVisitor;
+import com.google.gwt.dev.util.log.AbstractTreeLogger;
 import com.google.gwt.thirdparty.guava.common.base.Predicate;
 import com.google.gwt.thirdparty.guava.common.collect.FluentIterable;
 import com.google.gwt.thirdparty.guava.common.collect.Iterables;
 import com.google.gwt.thirdparty.guava.common.collect.Maps;
 import com.google.gwt.thirdparty.guava.common.collect.Multimap;
+import com.google.gwt.thirdparty.guava.common.collect.Ordering;
 import com.google.gwt.thirdparty.guava.common.collect.Sets;
 import com.google.gwt.thirdparty.guava.common.collect.TreeMultimap;
 
@@ -71,8 +73,10 @@
     }
   }
 
-  private Multimap<String, String> errorsByFilename = TreeMultimap.create();
-  private Multimap<String, String> warningsByFilename = TreeMultimap.create();
+  private Multimap<String, String> errorsByFilename
+      = TreeMultimap.create(Ordering.natural(), AbstractTreeLogger.LOG_LINE_COMPARATOR);
+  private Multimap<String, String> warningsByFilename
+      = TreeMultimap.create(Ordering.natural(), AbstractTreeLogger.LOG_LINE_COMPARATOR);
   private final JProgram jprogram;
   private final MinimalRebuildCache minimalRebuildCache;
 
diff --git a/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java b/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java
index 2cac012..a6f0fc08 100644
--- a/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java
+++ b/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java
@@ -17,7 +17,9 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.thirdparty.guava.common.collect.ComparisonChain;
 
+import java.util.Comparator;
 import java.util.HashSet;
 
 /**
@@ -25,6 +27,17 @@
  */
 public abstract class AbstractTreeLogger extends TreeLogger implements CanUpdateMetrics {
 
+  public static final Comparator<String> LOG_LINE_COMPARATOR =
+      new Comparator<String>() {
+        @Override
+        public int compare(String thisLine, String thatLine) {
+          return ComparisonChain.start()
+              .compare(thisLine.indexOf(':'), thatLine.indexOf(':'))
+              .compare(thisLine, thatLine)
+              .result();
+        }
+      };
+
   private static class UncommittedBranchData {
 
     public final Throwable caught;
diff --git a/dev/core/test/com/google/gwt/dev/util/UnitTestTreeLogger.java b/dev/core/test/com/google/gwt/dev/util/UnitTestTreeLogger.java
index b57a254..660ed05 100644
--- a/dev/core/test/com/google/gwt/dev/util/UnitTestTreeLogger.java
+++ b/dev/core/test/com/google/gwt/dev/util/UnitTestTreeLogger.java
@@ -16,6 +16,7 @@
 package com.google.gwt.dev.util;
 
 import com.google.gwt.core.ext.TreeLogger;
+import com.google.gwt.dev.util.log.AbstractTreeLogger;
 import com.google.gwt.thirdparty.guava.common.collect.ComparisonChain;
 import com.google.gwt.thirdparty.guava.common.collect.Lists;
 
@@ -207,7 +208,7 @@
     @Override
     public int compareTo(LogEntry that) {
       return ComparisonChain.start()
-          .compare(this.msg, that.msg)
+          .compare(this.msg, that.msg, AbstractTreeLogger.LOG_LINE_COMPARATOR)
           .compare(this.type, that.type)
           .result();
     }
