Skip to content
  1. Dec 20, 2013
    • Alp Toker's avatar
      Fix documentation typos · 171b0c36
      Alp Toker authored
      llvm-svn: 197757
      171b0c36
    • Kevin Enderby's avatar
      Un-revert: the buildbot failure in LLVM on lld-x86_64-win7 had me with · 36eba25f
      Kevin Enderby authored
      this commit as the only one on the Blamelist so I quickly reverted this.
      However it was actually Nick's change who has since fixed that issue.
      
      Original commit message:
      
      Changed the X86 assembler for intel syntax to work with directional labels.
      
      The X86 assembler as a separate code to parser the intel assembly syntax
      in X86AsmParser::ParseIntelOperand().  This did not parse directional labels.
      And if something like 1f was used as a branch target it would get an
      "Unexpected token" error.
      
      The fix starts in X86AsmParser::ParseIntelExpression() in the case for
      AsmToken::Integer, it needs to grab the IntVal from the current token
      then look for a 'b' or 'f' following an Integer.  Then it basically needs to
      do what is done in AsmParser::parsePrimaryExpr() for directional
      labels.  It saves the MCExpr it creates in the IntelExprStateMachine
      in the Sym field.
      
      When it returns to X86AsmParser::ParseIntelOperand() it looks
      for a non-zero Sym field in the IntelExprStateMachine and if
      set it creates a memory operand not an immediate operand
      it would normally do for the Integer.
      
      rdar://14961158
      
      llvm-svn: 197744
      36eba25f
    • Rafael Espindola's avatar
      Change getStringRepresentation to skip defaults. · 458a4851
      Rafael Espindola authored
      I have a pending change for clang to use getStringRepresentation to check
      that its DataLayout is in sync with llvm's.
      
      getStringRepresentation is not called from llvm itself, so far it is mostly
      a debugging aid, so the shorter strings are an independent improvement.
      
      llvm-svn: 197740
      458a4851
  2. Dec 19, 2013
    • David Peixotto's avatar
      Ensure deterministic when printing ARM assembler constant pools · 52303f6e
      David Peixotto authored
      We dump any non-empty assembler constant pools after a successful
      parse of an assembly file that uses the ldr pseudo opcode. These
      per-section constant pools should be output in a deterministic order
      to ensure that we always generate the same output when printing the
      output with an AsmStreamer.
      
      This patch changes the map data struture used to associate a section
      with its constant pool to a MapVector to ensure deterministic
      output. Because this map type does not support deletion, we now
      check that the constant pool is not empty before dumping its entries
      and clear the entries after emitting them with the streamer.
      
      llvm-svn: 197735
      52303f6e
    • Kevin Enderby's avatar
      Revert my change to the X86 assembler for intel syntax to work with · d6f2a637
      Kevin Enderby authored
      directional labels.  Because it doesn't work for windows :)
      
      llvm-svn: 197731
      d6f2a637
    • Kevin Enderby's avatar
      Changed the X86 assembler for intel syntax to work with directional labels. · 592d3ac2
      Kevin Enderby authored
      The X86 assembler has a separate code to parser the intel assembly syntax
      in X86AsmParser::ParseIntelOperand().  This did not parse directional labels.
      And if something like 1f was used as a branch target it would get an
      "Unexpected token" error.
      
      The fix starts in X86AsmParser::ParseIntelExpression() in the case for
      AsmToken::Integer, it needs to grab the IntVal from the current token
      then look for a 'b' or 'f' following the Integer.  Then it basically needs to
      do what is done in AsmParser::parsePrimaryExpr() for directional
      labels.  It saves the MCExpr it creates in the IntelExprStateMachine
      in the Sym field.
      
      When it returns to X86AsmParser::ParseIntelOperand() it looks
      for a non-zero Sym field in the IntelExprStateMachine and if
      set it creates a memory operand not an immediate operand
      it would normally do for the Integer.
      
      rdar://14961158
      
      llvm-svn: 197728
      592d3ac2
    • Hans Wennborg's avatar
      Make sys::ThreadLocal<> zero-initialized on non-thread builds (PR18205) · fabf8bfd
      Hans Wennborg authored
      According to the docs, ThreadLocal<>::get() should return NULL
      if no object has been set. This patch makes that the case also for non-thread
      builds and adds a very basic unit test to check it.
      
      (This was causing PR18205 because PrettyStackTraceHead didn't get zero-
      initialized and we'd crash trying to read past the end of that list. We didn't
      notice this so much on Linux since we'd crash after printing all the entries,
      but on Mac we print into a SmallString, and would crash before printing that.)
      
      llvm-svn: 197718
      fabf8bfd
    • Kay Tiong Khoo's avatar
      Stay classy (and legal) LLVM. Remove links to 3rd party SMT solver whose links... · e37d5209
      Kay Tiong Khoo authored
      Stay classy (and legal) LLVM. Remove links to 3rd party SMT solver whose links may not be permanent.
      
      llvm-svn: 197713
      e37d5209
    • Quentin Colombet's avatar
      [X86][fast-isel] Fix select lowering. · 90a646e4
      Quentin Colombet authored
      The condition in selects is supposed to be i1.
      Make sure we are just reading the less significant bit
      of the 8 bits width value to match this constraint.
      
      <rdar://problem/15651765>
      
      llvm-svn: 197712
      90a646e4
    • David Peixotto's avatar
      Implement the .ltorg directive for ARM assembly · 80c083a6
      David Peixotto authored
      This directive will write out the assembler-maintained constant
      pool for the current section. These constant pools are created to
      support the ldr-pseudo instruction (e.g. ldr r0, =val).
      
      The directive can be used by the programmer to place the constant
      pool in a location that can be reached by a pc-relative offset in
      the ldr instruction.
      
      llvm-svn: 197711
      80c083a6
    • David Peixotto's avatar
      Implement the ldr-pseudo opcode for ARM assembly · e407d093
      David Peixotto authored
      The ldr-pseudo opcode is a convenience for loading 32-bit constants.
      It is converted into a pc-relative load from a constant pool. For
      example,
      
        ldr r0, =0x10001
        ldr r1, =bar
      
      will generate this output in the final assembly
      
        ldr r0, .Ltmp0
        ldr r1, .Ltmp1
        ...
        .Ltmp0: .long 0x10001
        .Ltmp1: .long bar
      
      Sketch of the LDR pseudo implementation:
        Keep a map from Section => ConstantPool
      
        When parsing ldr r0, =val
          parse val as an MCExpr
          get ConstantPool for current Section
          Label = CreateTempSymbol()
          remember val in ConstantPool at next free slot
          add operand to ldr that is MCSymbolRef of Label
      
        On finishParse() callback
          Write out all non-empty constant pools
          for each Entry in ConstantPool
            Emit Entry.Label
            Emit Entry.Value
      
      Possible improvements to be added in a later patch:
        1. Does not convert load of small constants to mov
           (e.g. ldr r0, =0x1 => mov r0, 0x1)
        2. Does reuse constant pool entries for same constant
      
      The implementation was tested for ARM, Thumb1, and Thumb2 targets on
      linux and darwin.
      
      llvm-svn: 197708
      e407d093
    • David Peixotto's avatar
      Add a finishParse() callback to the targer asm parser · 308e7e43
      David Peixotto authored
      This callback is invoked when the parse has finished successfuly. It
      will be used to write out ARM constant pools to implement the ldr
      pseudo.
      
      llvm-svn: 197706
      308e7e43
    • Kay Tiong Khoo's avatar
      Improved fix for PR17827 (instcombine of shift/and/compare). · a570b5ad
      Kay Tiong Khoo authored
      This change fixes the case of arithmetic shift right - do not attempt to fold that case.
      This change also relaxes the conditions when attempting to fold the logical shift right and shift left cases.
      
      No additional IR-level test cases included at this time. See http://llvm.org/bugs/show_bug.cgi?id=17827 for proofs that these are correct transformations.
      
      llvm-svn: 197705
      a570b5ad
    • Rafael Espindola's avatar
      Small simplification, p0 is the same as p. · 4fa79758
      Rafael Espindola authored
      llvm-svn: 197699
      4fa79758
    • Zoran Jovanovic's avatar
      Support for microMIPS control instructions. · 8e918c3c
      Zoran Jovanovic authored
      llvm-svn: 197696
      8e918c3c
    • Rafael Espindola's avatar
      Long doubles are required to be aligned to 128 bits and svr4 32 bits. · 9ec26f39
      Rafael Espindola authored
      Clang was already getting this right.
      
      llvm-svn: 197694
      9ec26f39
    • Hal Finkel's avatar
      Add a disassembler to the PowerPC backend · 2345347e
      Hal Finkel authored
      The tests for the disassembler were adapted from the encoder tests, and for the
      most part, the output from the disassembler matches that encoder-test inputs.
      There are some places where more-informative mnemonics could be produced
      (notably for the branch instructions), and those cases are noted in the tests
      with FIXMEs.
      
      Future work includes:
      
       - Generating more-informative mnemonics when possible (this may also be done
         in the printer).
      
       - Remove the dependence on positional "numbered" operand-to-variable mapping
         (for both encoding and decoding).
      
       - Internally using 64-bit instruction variants in 64-bit mode (if this turns
         out to matter).
      
      llvm-svn: 197693
      2345347e
    • Zoran Jovanovic's avatar
      Support for microMIPS LL and SC instructions. · ff9d5f32
      Zoran Jovanovic authored
      llvm-svn: 197692
      ff9d5f32
    • Zoran Jovanovic's avatar
      Support for microMIPS TLS relocations. · 69be811a
      Zoran Jovanovic authored
      llvm-svn: 197685
      69be811a
    • Evgeniy Stepanov's avatar
      [dfsan] Simplify code after r197677. · a284e559
      Evgeniy Stepanov authored
      llvm-svn: 197679
      a284e559
    • Evgeniy Stepanov's avatar
      Add an explicit insert point argument to SplitBlockAndInsertIfThen. · a9164e9e
      Evgeniy Stepanov authored
      Currently SplitBlockAndInsertIfThen requires that branch condition is an
      Instruction itself, which is very inconvenient, because it is sometimes an
      Operator, or even a Constant.
      
      llvm-svn: 197677
      a9164e9e
    • NAKAMURA Takumi's avatar
      GCOV.cpp: Fix format strings, %lf. Don't use %lf to double. · 6e3c4235
      NAKAMURA Takumi authored
      llvm-svn: 197663
      6e3c4235
    • Matt Arsenault's avatar
      R600/SI: Make private pointers be 32-bit. · a98cd6a5
      Matt Arsenault authored
      Different sized address spaces should theoretically work
      most of the time now, and since 64-bit add is currently
      disabled, using more 32-bit pointers fixes some cases.
      
      llvm-svn: 197659
      a98cd6a5
    • Saleem Abdulrasool's avatar
      ARM IAS: support .inst directive · c0da2cb3
      Saleem Abdulrasool authored
      This adds support for the .inst directive.  This is an ARM specific directive to
      indicate an instruction encoded as a constant expression.  The major difference
      between .word, .short, or .byte and .inst is that the latter will be
      disassembled as an instruction since it does not get flagged as data.
      
      llvm-svn: 197657
      c0da2cb3
    • Josh Magee's avatar
      [stackprotector] Use analysis from the StackProtector pass for stack layout in... · 22b8ba2d
      Josh Magee authored
      [stackprotector] Use analysis from the StackProtector pass for stack layout in PEI a nd LocalStackSlot passes.
      
      This changes the MachineFrameInfo API to use the new SSPLayoutKind information
      produced by the StackProtector pass (instead of a boolean flag) and updates a
      few pass dependencies (to preserve the SSP analysis).
      
      The stack layout follows the same approach used prior to this change - i.e.,
      only LargeArray stack objects will be placed near the canary and everything
      else will be laid out normally.  After this change, structures containing large
      arrays will also be placed near the canary - a case previously missed by the
      old implementation.
      
      Out of tree targets will need to update their usage of
      MachineFrameInfo::CreateStackObject to remove the MayNeedSP argument. 
      
      The next patch will implement the rules for sspstrong and sspreq.  The end goal
      is to support ssp-strong stack layout rules.
      
      WIP.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D2158
      
      llvm-svn: 197653
      22b8ba2d
    • Rafael Espindola's avatar
      Add stack alignment information for Sparc. · 2fc7101e
      Rafael Espindola authored
      This matches the data in clang which was added by Jakob Stoklund Olesen in
      r179596.
      
      Thanks for erikjv on irc for pointing me to the relevant documents:
      http://sparc.com/standards/64.psabi.1.35.ps.Z
      page 25: Every stack frame must be 16-byte aligned.
      
      http://sparc.com/standards/psABI3rd.pdf
      page 3-10: Although the architecture requires only word alignment, software convention and the operating system require every stack frame to be doubleword aligned.
      
      I tried to add a test, but it looks like sparc doesn't implement dynamic stack
      realignment. This will be tested in clang shortly.
      
      llvm-svn: 197646
      2fc7101e
    • Reid Kleckner's avatar
      Begin adding docs and IR-level support for the inalloca attribute · a534a381
      Reid Kleckner authored
      The inalloca attribute is designed to support passing C++ objects by
      value in the Microsoft C++ ABI.  It behaves the same as byval, except
      that it always implies that the argument is in memory and that the bytes
      are never copied.  This attribute allows the caller to take the address
      of an outgoing argument's memory and execute arbitrary code to store
      into it.
      
      This patch adds basic IR support, docs, and verification.  It does not
      attempt to implement any lowering or fix any possibly broken transforms.
      
      When this patch lands, a complete description of this feature should
      appear at http://llvm.org/docs/InAlloca.html .
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D2173
      
      llvm-svn: 197645
      a534a381
    • Rafael Espindola's avatar
      Synchronize the NaCl DataLayout strings with the ones in clang. · ddb913cc
      Rafael Espindola authored
      Patch by Derek Schuff.
      
      llvm-svn: 197640
      ddb913cc
    • Reed Kotler's avatar
      Make cosmetic changes as part of Mips internal post commit review of · 47f3c64a
      Reed Kotler authored
      patch r196331.
      
      llvm-svn: 197638
      47f3c64a
    • Yuchen Wu's avatar
      llvm-cov: Added -f option for function summaries. · bb6a4771
      Yuchen Wu authored
      Similar to the file summaries, the function summaries output line,
      branching and call statistics. The file summaries have been moved
      outside the initial loop so that all of the function summaries can be
      outputted before file summaries.
      
      Also updated test cases.
      
      llvm-svn: 197633
      bb6a4771
    • Reed Kotler's avatar
      Fix a problem with mips16 stubs when calls are transformed during · 2500bd6c
      Reed Kotler authored
      tail call optimization. Some more work may be needed for indirect
      calls but this patch fixes the current regression in Prolangc++/trees.
      S2 optimization as part of the general cleanup and optimization
      of prolog and epilog was not saving S2 in this case and needed to.
      
      llvm-svn: 197630
      2500bd6c
  3. Dec 18, 2013
Loading