Skip to content
  1. Apr 02, 2013
    • Jakob Stoklund Olesen's avatar
      Add 64-bit load and store instructions. · 8eabc3ff
      Jakob Stoklund Olesen authored
      There is only a few new instructions, the rest is handled with patterns.
      
      llvm-svn: 178528
      8eabc3ff
    • Jakob Stoklund Olesen's avatar
      Basic 64-bit ALU operations. · 917e07f0
      Jakob Stoklund Olesen authored
      SPARC v9 extends all ALU instructions to 64 bits, so we simply need to
      add patterns to use them for both i32 and i64 values.
      
      llvm-svn: 178527
      917e07f0
    • Jakob Stoklund Olesen's avatar
      Materialize 64-bit immediates. · bddb20ee
      Jakob Stoklund Olesen authored
      The last resort pattern produces 6 instructions, and there are still
      opportunities for materializing some immediates in fewer instructions.
      
      llvm-svn: 178526
      bddb20ee
    • Jakob Stoklund Olesen's avatar
      Add 64-bit shift instructions. · c1d1a481
      Jakob Stoklund Olesen authored
      SPARC v9 defines new 64-bit shift instructions. The 32-bit shift right
      instructions are still usable as zero and sign extensions.
      
      This adds new F3_Sr and F3_Si instruction formats that probably should
      be used for the 32-bit shifts as well. They don't really encode an
      simm13 field.
      
      llvm-svn: 178525
      c1d1a481
    • Jakob Stoklund Olesen's avatar
      Add predicates for distinguishing 32-bit and 64-bit modes. · 739d722e
      Jakob Stoklund Olesen authored
      The 'sparc' architecture produces 32-bit code while 'sparcv9' produces
      64-bit code.
      
      It is also possible to run 32-bit code using SPARC v9 instructions with:
      
        llc -march=sparc -mattr=+v9
      
      llvm-svn: 178524
      739d722e
    • Jakob Stoklund Olesen's avatar
      Add support for 64-bit calling convention. · 0b21f35a
      Jakob Stoklund Olesen authored
      This is far from complete, but it is enough to make it possible to write
      test cases using i64 arguments.
      
      Missing features:
      - Floating point arguments.
      - Receiving arguments on the stack.
      - Calls.
      
      llvm-svn: 178523
      0b21f35a
    • Jakob Stoklund Olesen's avatar
      Add an I64Regs register class for 64-bit registers. · 5ad3b353
      Jakob Stoklund Olesen authored
      We are going to use the same registers for 32-bit and 64-bit values, but
      in two different register classes. The I64Regs register class has a
      larger spill size and alignment.
      
      The addition of an i64 register class confuses TableGen's type
      inference, so it is necessary to clarify the type of some immediates and
      the G0 register.
      
      In 64-bit mode, pointers are i64 and should use the I64Regs register
      class. Implement getPointerRegClass() to dynamically provide the pointer
      register class depending on the subtarget. Use ptr_rc and iPTR for
      memory operands.
      
      Finally, add the i64 type to the IntRegs register class. This register
      class is not used to hold i64 values, I64Regs is for that. The type is
      required to appease TableGen's type checking in output patterns like this:
      
        def : Pat<(add i64:$a, i64:$b), (ADDrr $a, $b)>;
      
      SPARC v9 uses the same ADDrr instruction for i32 and i64 additions, and
      TableGen doesn't know to check the type of register sub-classes.
      
      llvm-svn: 178522
      5ad3b353
    • Hal Finkel's avatar
      Fix typo in PPCISelLowering · 93d75ea0
      Hal Finkel authored
      Thanks to Bill Schmidt for finding this in review of r178480.
      
      llvm-svn: 178521
      93d75ea0
    • John McCall's avatar
      Add -Wstatic-local-in-inline, which warns about using a static local · c87d9723
      John McCall authored
      variable in a C99 inline (but not static-inline or extern-inline)
      function definition.
      
      The standard doesn't actually say that this doesn't apply to
      "extern inline" definitions, but that seems like a useful extension,
      and it at least doesn't have the obvious flaw that a static
      mutable variable in an externally-available definition does.
      
      rdar://13535367
      
      llvm-svn: 178520
      c87d9723
    • Andrew Trick's avatar
      The divide unit is not pipeline, but it is still buffered. · e1d88cfb
      Andrew Trick authored
      Buffered means a later divide may be executed out-of-order while a
      prior divide is sitting (buffered) in a reservation station.
      
      You can tell it's not pipelined, because operations that use it
      reserve it for more than one cycle:
      
      def : WriteRes<WriteIDiv, [HWPort0, HWDivider]> {
        let Latency = 25;
        let ResourceCycles = [1, 10];
      }
      
      We don't currently distinguish between an unpipeline operation and one
      that is split into multiple micro-ops requiring the same unit. Except
      that the later may have NumMicroOps > 1 if they also consume
      issue/dispatch resources.
      
      llvm-svn: 178519
      e1d88cfb
    • Anna Zaks's avatar
      [analyzer] Teach invalidateRegions that regions within LazyCompoundVal need to be invalidated · 60bf5f45
      Anna Zaks authored
      Refactor invalidateRegions to take SVals instead of Regions as input and teach RegionStore
      about processing LazyCompoundVal as a top-level “escaping” value.
      
      This addresses several false positives that get triggered by the NewDelete checker, but the
      underlying issue is reproducible with other checkers as well (for example, MallocChecker).
      
      llvm-svn: 178518
      60bf5f45
    • Adrian Prantl's avatar
      un-break remaining gdb buildbot testcases. · 2832b4e8
      Adrian Prantl authored
      Make sure we do not generate line info for debugging-related frame setup.
      Follow-up to r178361 / rdar://problem/12767564
      
      llvm-svn: 178517
      2832b4e8
    • Jordan Rose's avatar
      [analyzer] For now, don't inline [cd]tors of C++ containers. · e189b869
      Jordan Rose authored
      This is a heuristic to make up for the fact that the analyzer doesn't
      model C++ containers very well. One example is modeling that
      'std::distance(I, E) == 0' implies 'I == E'. In the future, it would be
      nice to model this explicitly, but for now it just results in a lot of
      false positives.
      
      The actual heuristic checks if the base type has a member named 'begin' or
      'iterator'. If so, we treat the constructors and destructors of that type
      as opaque, rather than inlining them.
      
      This is intended to drastically reduce the number of false positives
      reported with experimental destructor support turned on. We can tweak the
      heuristic in the future, but we'd rather err on the side of false negatives
      for now.
      
      <rdar://problem/13497258>
      
      llvm-svn: 178516
      e189b869
    • Jordan Rose's avatar
      [analyzer] Cache whether a function is generally inlineable. · 19440f58
      Jordan Rose authored
      Certain properties of a function can determine ahead of time whether or not
      the function is inlineable, such as its kind, its signature, or its
      location. We can cache this value in the FunctionSummaries map to avoid
      rechecking these static properties for every call.
      
      Note that the analyzer may still decide not to inline a specific call to
      a function because of the particular dynamic properties of the call along
      the current path.
      
      No intended functionality change.
      
      llvm-svn: 178515
      19440f58
    • Jordan Rose's avatar
      [analyzer] Use inline storage in the FunctionSummary DenseMap. · 33a1063c
      Jordan Rose authored
      The summaries lasted for the lifetime of the map anyway; no reason to
      include an extra allocation.
      
      Also, use SmallBitVector instead of BitVector to track the visited basic
      blocks -- most functions will have less than 64 basic blocks -- and
      use bitfields for the other fields to reduce the size of the structure.
      
      No functionality change.
      
      llvm-svn: 178514
      33a1063c
    • Jordan Rose's avatar
      [analyzer] Allow suppressing diagnostics reported within the 'std' namespace · d11ef1aa
      Jordan Rose authored
      This is controlled by the 'suppress-c++-stdlib' analyzer-config flag.
      It is currently off by default.
      
      This is more suppression than we'd like to do, since obviously there can
      be user-caused issues within 'std', but it gives us the option to wield
      a large hammer to suppress false positives the user likely can't work
      around.
      
      llvm-svn: 178513
      d11ef1aa
    • Jim Ingham's avatar
      Remove some unused code. · 24eea5d0
      Jim Ingham authored
      llvm-svn: 178512
      24eea5d0
    • Chris Lattner's avatar
      unindent the file to follow coding standards, change class doc comment · e381a8e5
      Chris Lattner authored
      to be correct.  No functionality or behavior change.
      
      llvm-svn: 178511
      e381a8e5
    • Matt Beaumont-Gay's avatar
      Fix typo in test · b2cadd09
      Matt Beaumont-Gay authored
      llvm-svn: 178510
      b2cadd09
    • Sean Callanan's avatar
      Enabled blocks support in the expression parser. · eeb43849
      Sean Callanan authored
      Note: although it is now possible to declare blocks
      and call them inside the same expression, we do not
      generate correct block descriptors so these blocks
      cannot be passed to functions like dispatch_async.
      
      <rdar://problem/12578656>
      
      llvm-svn: 178509
      eeb43849
    • NAKAMURA Takumi's avatar
      Target/R600: Fix CMake build to add missing files. · fd98f7f2
      NAKAMURA Takumi authored
      llvm-svn: 178508
      fd98f7f2
    • Chad Rosier's avatar
      Use the ASYContext::getTypeSizeInChars API to cleanup some ugliness, per John · c3aa2026
      Chad Rosier authored
      and Jordan's suggestion.  No functional change intendend.
      
      llvm-svn: 178507
      c3aa2026
  2. Apr 01, 2013
Loading