GitHub PushEvent at 2014-11-21 21:32:42
Repository: ghc
Actor: ghc-mirror
Payload: {"shas":[["e16a342d70b92fc8480793d3ec911853f0c31e44","ef9c145df0d91f4ae3f2ee937c5757f539df3df6@gmail.com","llvmGen: Compatibility with LLVM 3.5 (re #9142)\n\nDue to changes in LLVM 3.5 aliases now may only refer to definitions.\nPreviously to handle symbols defined outside of the current commpilation\nunit GHC would emit both an `external` declaration, as well as an alias\npointing to it, e.g.,\n\n    @stg_BCO_info = external global i8\n    @stg_BCO_info$alias = alias private i8* @stg_BCO_info\n\nWhere references to `stg_BCO_info` will use the alias\n`stg_BCO_info$alias`. This is not permitted under the new alias\nbehavior, resulting in errors resembling,\n\n    Alias must point to a definition\n    i8* @\"stg_BCO_info$alias\"\n\nTo fix this, we invert the naming relationship between aliases and\ndefinitions. That is, now the symbol definition takes the name\n`@stg_BCO_info$def` and references use the actual name, `@stg_BCO_info`.\nThis means the external symbols can be handled by simply emitting an\n`external` declaration,\n\n    @stg_BCO_info = external global i8\n\nWhereas in the case of a forward declaration we emit,\n\n    @stg_BCO_info = alias private i8* @stg_BCO_info$def\n\nReviewed By: austin\n\nDifferential Revision: https://phabricator.haskell.org/D155","Ben Gamari",true]],"size":1,"ref":"refs/heads/master","head":"e16a342d70b92fc8480793d3ec911853f0c31e44"}