1. Jan 12, 2014
  2. Jan 11, 2014
    • Alp Toker's avatar
      lit: Provide source locations in cfg files with older Python versions · 74997190
      Alp Toker authored
      This commit prospectively brings the benefits of r198766 to older supported
      Python versions (2.5+).
      
      Tested with Python 2.6, 2.7, 3.1 and 3.3 (!)
      
      llvm-svn: 199009
      74997190
    • Alp Toker's avatar
      Fix 'ned' typo in doc comment · 798060e0
      Alp Toker authored
      Patch by Jasper Neumann!
      
      llvm-svn: 199007
      798060e0
    • Alp Toker's avatar
      lit: execfile() isn't present in Python 3.3 · f0a24594
      Alp Toker authored
      On the other hand, exec(compile()) doesn't work in older Python versions in the
      2.x series.
      
      This commit introduces exec(compile()) with a fallback to plain exec(). That'll
      hopefully hit the sweet spot in terms of version support.
      
      Followup to r198766 which added enhanced source locations for lit cfg parsing.
      
      llvm-svn: 199006
      f0a24594
    • Chandler Carruth's avatar
      [PM] Actually nest pass managers correctly when parsing the pass · 258dbb3b
      Chandler Carruth authored
      pipeline string. Add tests that cover this now that we have execution
      dumping in the pass managers.
      
      llvm-svn: 199005
      258dbb3b
    • Chandler Carruth's avatar
      [PM] Add names to passes under the new pass manager, and a debug output · a13f27cc
      Chandler Carruth authored
      mode that can be used to debug the execution of everything.
      
      No support for analyses here, that will come later. This already helps
      show parts of the opt commandline integration that isn't working. Tests
      of that will start using it as the bugs are fixed.
      
      llvm-svn: 199004
      a13f27cc
    • Chandler Carruth's avatar
      [PM] Somehow I missed the header guards on this file. Yikes! · d7693d84
      Chandler Carruth authored
      llvm-svn: 199003
      d7693d84
    • NAKAMURA Takumi's avatar
      LoopVectorize.cpp: Appease MSC16. · 41c409ce
      NAKAMURA Takumi authored
      Excuse me, I hope msc16 builders would be fine till its end day.
      Introduce nullptr then. ;)
      
      llvm-svn: 199001
      41c409ce
    • NAKAMURA Takumi's avatar
    • NAKAMURA Takumi's avatar
      llvm/test/CodeGen/X86/anyregcc.ll: Add explicit -mtriple=x86_64-unknown-unknown. · 80a474c1
      NAKAMURA Takumi authored
      XMM(s) are really spilling for targeting Win64.
      
      llvm-svn: 198999
      80a474c1
    • Chandler Carruth's avatar
      [PM] Add (very skeletal) support to opt for running the new pass · 66445382
      Chandler Carruth authored
      manager. I cannot emphasize enough that this is a WIP. =] I expect it
      to change a great deal as things stabilize, but I think its really
      important to get *some* functionality here so that the infrastructure
      can be tested more traditionally from the commandline.
      
      The current design is looking something like this:
      
        ./bin/opt -passes='module(pass_a,pass_b,function(pass_c,pass_d))'
      
      So rather than custom-parsed flags, there is a single flag with a string
      argument that is parsed into the pass pipeline structure. This makes it
      really easy to have nice structural properties that are very explicit.
      There is one obvious and important shortcut. You can start off the
      pipeline with a pass, and the minimal context of pass managers will be
      built around the entire specified pipeline. This makes the common case
      for tests super easy:
      
        ./bin/opt -passes=instcombine,sroa,gvn
      
      But this won't introduce any of the complexity of the fully inferred old
      system -- we only ever do this for the *entire* argument, and we only
      look at the first pass. If the other passes don't fit in the pass
      manager selected it is a hard error.
      
      The other interesting aspect here is that I'm not relying on any
      registration facilities. Such facilities may be unavoidable for
      supporting plugins, but I have alternative ideas for plugins that I'd
      like to try first. My plan is essentially to build everything without
      registration until we hit an absolute requirement.
      
      Instead of registration of pass names, there will be a library dedicated
      to parsing pass names and the pass pipeline strings described above.
      Currently, this is directly embedded into opt for simplicity as it is
      very early, but I plan to eventually pull this into a library that opt,
      bugpoint, and even Clang can depend on. It should end up as a good home
      for things like the existing PassManagerBuilder as well.
      
      There are a bunch of FIXMEs in the code for the parts of this that are
      just stubbed out to make the patch more incremental. A quick list of
      what's coming up directly after this:
      - Support for function passes and building the structured nesting.
      - Support for printing the pass structure, and FileCheck tests of all of
        this code.
      - The .def-file based pass name parsing.
      - IR priting passes and the corresponding tests.
      
      Some obvious things that I'm not going to do right now, but am
      definitely planning on as the pass manager work gets a bit further:
      - Pull the parsing into library, including the builders.
      - Thread the rest of the target stuff into the new pass manager.
      - Wire support for the new pass manager up to llc.
      - Plugin support.
      
      Some things that I'd like to have, but are significantly lower on my
      priority list. I'll get to these eventually, but they may also be places
      where others want to contribute:
      - Adding nice error reporting for broken pass pipeline descriptions.
      - Typo-correction for pass names.
      
      llvm-svn: 198998
      66445382
    • Nick Lewycky's avatar
    • Nick Lewycky's avatar
      Add a new attribute 'enable_if' which can be used to control overload... · 35a6ef4c
      Nick Lewycky authored
      Add a new attribute 'enable_if' which can be used to control overload resolution based on the values of the function arguments at the call site.
      
      llvm-svn: 198996
      35a6ef4c
    • Nick Lewycky's avatar
      Use the appropriate SourceLocation for the template backtrace when doing · 56412330
      Nick Lewycky authored
      template argument deduction.
      
      llvm-svn: 198995
      56412330
    • Rui Ueyama's avatar
      [PECOFF] Support HEAPSIZE directive. · 6a5f7c22
      Rui Ueyama authored
      llvm-svn: 198994
      6a5f7c22
    • Rui Ueyama's avatar
      [PECOFF] Refactor module-defintion file parser. · f98a18ac
      Rui Ueyama authored
      Refactor the parser so that the parser can return arbitrary type of parse
      result other than a vector of ExportDesc. Parsers for non-EXPORTS directives
      will be implemented in different patches. No functionality change.
      
      llvm-svn: 198993
      f98a18ac
    • Richard Smith's avatar
      PR12208: Under -fno-elide-constructors, don't forget to actually copy an NRVO · 454b4af0
      Richard Smith authored
      variable to the return slot. Patch by David Wiberg, with test case alterations
      by me.
      
      llvm-svn: 198991
      454b4af0
    • Jim Ingham's avatar
      55d3a0c3
    • Warren Hunt's avatar
      [ms-abi] Change the way alignment is tracked · 9425891f
      Warren Hunt authored
      This patch more cleanly seperates the concepts of Preferred Alignment 
      and Required Alignment.  Most notable that changes to Required Alignment 
      do *not* impact preferred alignment until late in struct layout.  This 
      is observable when using pragma pack and non-virtual bases and the use 
      of tail padding when laying them out.
      
      Test cases included.
      
      llvm-svn: 198988
      9425891f
    • Nick Kledzik's avatar
      [yaml] use BumpPtrAllocator for string copies · 8293c711
      Nick Kledzik authored
      llvm-svn: 198987
      8293c711
    • Nick Kledzik's avatar
      [mach-o] enable mach-o and native yaml to be intermixed · 6edd722a
      Nick Kledzik authored
      The main goal of this patch is to allow "mach-o encoded as yaml" and "native
      encoded as yaml" documents to be intermixed.  They are distinguished via 
      yaml tags at the start of the document.  This will enable all mach-o test cases
      to be written using yaml instead of checking in object files.
      
      The Registry was extend to allow yaml tag handlers to be registered.  The
      mach-o Reader adds a yaml tag handler for the tag "!mach-o". 
      
      Additionally, this patch fixes some buffer ownership issues.  When parsing
      mach-o binaries, the mach-o atoms can have pointers back into the memory 
      mapped .o file.  But with yaml encoded mach-o, name and content are ephemeral, 
      so a copyRefs parameter was added to cause the mach-o atoms to make their
      own copy.  
      
      llvm-svn: 198986
      6edd722a
    • Juergen Ributzka's avatar
      [anyregcc] Fix callee-save mask for anyregcc · 976d94b8
      Juergen Ributzka authored
      Use separate callee-save masks for XMM and YMM registers for anyregcc on X86 and
      select the proper mask depending on the target cpu we compile for.
      
      llvm-svn: 198985
      976d94b8
    • Greg Clayton's avatar
      Make sure to cleanup the "dwarf-lookups.txt" log file. · fd6e4b91
      Greg Clayton authored
      llvm-svn: 198984
      fd6e4b91
    • Richard Smith's avatar
      Fix "regression" caused by updating our notion of POD to better match the C++11 · 6fa28ffd
      Richard Smith authored
      rules: instead of requiring flexible array members to be POD, require them to
      be trivially-destructible. This seems to be the only constraint that actually
      matters here (and even then, it's questionable whether this matters).
      
      llvm-svn: 198983
      6fa28ffd