Skip to content
  1. May 12, 2017
    • Teresa Johnson's avatar
      Restrict call metadata based hotness detection to Sample PGO mode · 2a6b7991
      Teresa Johnson authored
      Summary:
      Don't use the metadata on call instructions for determining hotness
      unless we are in sample PGO mode, where it is needed because profile
      counts are not accurate. In instrumentation mode this is not necessary
      and does more harm than good when calls have VP metadata that hasn't
      been properly scaled after transformations or dropped after constant
      prop based devirtualization (both should be fixed, but we don't need
      to do this in the first place for instrumentation PGO).
      
      This required adjusting a number of tests to distinguish between sample
      and instrumentation PGO handling, and to add in profile summary metadata
      so that getProfileCount can get the summary.
      
      Reviewers: davidxl, danielcdh
      
      Subscribers: aemerson, rengolin, mehdi_amini, Prazek, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D32877
      
      llvm-svn: 302844
      2a6b7991
    • Rafael Espindola's avatar
      Reduce templating. NFC. · 5ab19895
      Rafael Espindola authored
      llvm-svn: 302843
      5ab19895
    • Richard Smith's avatar
      Remove unnecessary mapping from SourceLocation to Module. · 858e0e0a
      Richard Smith authored
      When we parse a redefinition of an entity for which we have a hidden existing
      declaration, make it visible in the current module instead of mapping the
      current source location to its containing module.
      
      llvm-svn: 302842
      858e0e0a
    • Eric Fiselier's avatar
      Fix XFAIL to reflect recent fixes in GCC · bb78837e
      Eric Fiselier authored
      llvm-svn: 302841
      bb78837e
    • Adrian Prantl's avatar
      Module Debug Info: Emit namespaced C++ forward decls in the correct module. · d8870558
      Adrian Prantl authored
      The AST merges NamespaceDecls, but for module debug info it is
      important to put a namespace decl (or rather its children) into the
      correct (sub-)module, so we need to use the parent module of the decl
      that triggered this namespace to be serialized as a second key when
      looking up DINamespace nodes.
      
      rdar://problem/29339538
      
      llvm-svn: 302840
      d8870558
    • Michael Kruse's avatar
      [DeLICM] Use input access heuristic for mapped PHI WRITEs. · d644ec76
      Michael Kruse authored
      As with the scalar operand of the initial StoreInst, also use input
      accesses when searching for new opportunities after mapping a
      PHI write.
      
      The same rational applies here: After LICM has been applied, the
      promoted value will either be an instruction in the same statement
      (in which case we fall back to try every scalar access of the
      statement), or in another statement such that there will be such
      an input access. In the latter case other scalars cannot have
      originated from the same register promotion, at least not by LICM.
      
      This mostly helps to decrease compilation time and makes debugging
      easier by not pursuing unpromising routes. In some circumstances,
      it may change the compiler's output.
      
      llvm-svn: 302839
      d644ec76
    • Michael Kruse's avatar
      [DeLICM] Lookup input accesses. · 4c276433
      Michael Kruse authored
      Previous to this patch, we used VirtualUse to determine the input
      access of an llvm::Value in a statement. The input access is the
      READ MemoryAccess that makes a value available in that statement,
      which can either be a READ of a MemoryKind::Value or the
      MemoryKind::PHI for a PHINode in the statement. DeLICM uses the input
      access to heuristically find a candidate to map without searching all
      possible values.
      
      This might modify the behaviour in that previously PHI accesses were
      not considered input accesses before. This was unintentially lost when
      "VirtualUse" was extracted from the "Known Knowledge" patch.
      
      llvm-svn: 302838
      4c276433
    • Michael Kruse's avatar
      [VirtualInstruction] Do a lookup instead of a linear search. NFC. · bfaa1857
      Michael Kruse authored
      llvm-svn: 302837
      bfaa1857
    • Michael Kruse's avatar
      [ScopInfo] Keep scalar acceess dictionaries up-to-data. NFC. · e60eca73
      Michael Kruse authored
      When removing a MemoryAccess, also remove it from maps pointing to it.
      This was already done for InstructionToAccess, but not yet for
      ValueReads, ValueWrites and PHIWrites as those were only used during
      the ScopBuilder phase. Keeping them updated allows us to use them
      later as well.
      
      llvm-svn: 302836
      e60eca73
    • Reid Kleckner's avatar
      Issue diagnostics when returning FP values on x86_64 without SSE1/2 · 43bbeb4c
      Reid Kleckner authored
      Avoid using report_fatal_error, because it will ask the user to file a
      bug. If the user attempts to disable SSE on x86_64 and them use floating
      point, that's a bug in their code, not a bug in the compiler.
      
      This is just a start. There are other ways to crash the backend in this
      configuration, but they should be updated to follow this pattern.
      
      Differential Revision: https://reviews.llvm.org/D27522
      
      llvm-svn: 302835
      43bbeb4c
    • Guozhi Wei's avatar
      [PPC] Change the register constraint of the first source operand of... · 22e7da95
      Guozhi Wei authored
      [PPC] Change the register constraint of the first source operand of instruction mtvsrdd to g8rc_nox0
      
      According to Power ISA V3.0 document, the first source operand of mtvsrdd is constant 0 if r0 is specified. So the corresponding register constraint should be g8rc_nox0.
      
      This bug caused wrong output generated by 401.bzip2 when -mcpu=power9 and fdo are specified.
      
      Differential Revision: https://reviews.llvm.org/D32880
      
      llvm-svn: 302834
      22e7da95
    • Sean Callanan's avatar
      [DWARF parser] Produce correct template parameter packs · 09e91ac6
      Sean Callanan authored
      Templates can end in parameter packs, like this
      
      template <class T...> struct MyStruct 
        { /*...*/ };
      
      LLDB does not currently support these parameter packs; 
      it does not emit them into the template argument list
      at all. This causes problems when you specialize, e.g.:
      
      template <> struct MyStruct<int> 
        { /*...*/ };
      template <> struct MyStruct<int, int> : MyStruct<int> 
        { /*...*/ };
      
      LLDB generates two template specializations, each with 
      no template arguments, and then when they are imported 
      by the ASTImporter into a parser's AST context we get a 
      single specialization that inherits from itself, 
      causing Clang's record layout mechanism to smash its
      stack.
      
      This patch fixes the problem for classes and adds
      tests. The tests for functions fail because Clang's
      ASTImporter can't import them at the moment, so I've
      xfailed that test.
      
      Differential Revision: https://reviews.llvm.org/D33025
      
      llvm-svn: 302833
      09e91ac6
    • Rafael Espindola's avatar
      Reduce template usage. NFC. · 895aea6d
      Rafael Espindola authored
      llvm-svn: 302832
      895aea6d
  2. May 11, 2017
Loading