bootstrap compiler 1.0.0-M7.
Add @uncheckedPure annotation.

https://groups.google.com/d/msg/scala-internals/gymfMndvFLc/sRlOU2UThloJ

Summarizing excerpt:

  Why, you might ask, are we obtaining a static reference to
  Predef$.MODULE$ only to cast it aside unused? The reason is that
  Predef is an object, and objects are lazily loaded, and therefore
  every single call to Predef is potentially side-effecting (as far as
  the optimizer understands) and can never be eliminated.  Even after we
  have eliminated the method call itself.
  ...
  We could eliminate the Predef$ no-ops in the short-term if we only had
  an annotation for objects ("@pure") which allowed the optimizer to
  assume that loading them is side-effect free.

Typical example of impact, full source of the method
is in policy/src/test/scala/pure.scala.

// scala 2.11.2              // policy
//                           //
//  0: getstatic     #25     //  0: dload_3
//  3: getstatic     #30     //  1: sipush        1000
//  6: astore        5       //  4: i2d
//  8: dload_3               //  5: dmul
//  9: sipush        1000    //  6: dstore        5
// 12: i2d                   //  8: dload_1
// 13: dmul                  //  9: dload         5
// 14: dstore        7       // 11: dmul
// 16: astore        6       // 12: dreturn
// 18: dload_1
// 19: dload         7
// 21: dmul
// 22: dreturn

The total impact on policy is about 175K of bytecode eliminated,
as measured by summing all classfiles sizes. This is not especially
relevant in the large but can be very important in hot methods
due to thresholds like the 35-byte hotspot inlining ceiling.