Skip to content
  1. Dec 17, 2013
    • Quentin Colombet's avatar
      Add warning capabilities in LLVM. · b4c44d23
      Quentin Colombet authored
      This reapplies r197438 and fixes the link-time circular dependency between
      IR and Support. The fix consists in moving the diagnostic support into IR.
      
      The patch adds a new LLVMContext::diagnose that can be used to communicate to
      the front-end, if any, that something of interest happened.
      The diagnostics are supported by a new abstraction, the DiagnosticInfo class.
      The base class contains the following information:
      - The kind of the report: What this is about.
      - The severity of the report: How bad this is.
      
      This patch also adds 2 classes:
      - DiagnosticInfoInlineAsm: For inline asm reporting. Basically, this diagnostic
      will be used to switch to the new diagnostic API for LLVMContext::emitError.
      - DiagnosticStackSize: For stack size reporting. Comes as a replacement of the
      hard coded warning in PEI.
      
      This patch also features dynamic diagnostic identifiers. In other words plugins
      can use this infrastructure for their own diagnostics (for more details, see
      getNextAvailablePluginDiagnosticKind).
      
      This patch introduces a new DiagnosticHandlerTy and a new DiagnosticContext in
      the LLVMContext that should be set by the front-end to be able to map these
      diagnostics in its own system.
      
      http://llvm-reviews.chandlerc.com/D2376
      <rdar://problem/15515174>
      
      llvm-svn: 197508
      b4c44d23
    • Matheus Almeida's avatar
      [mips] Fix off by one issue when applying a fixup. · 8cc8b35a
      Matheus Almeida authored
      The branch offset for a R_MIPS_PC16 relocation is indeed a 16-bit signed
      immediate.
      
      llvm-svn: 197506
      8cc8b35a
    • Duncan P. N. Exon Smith's avatar
      Revert "Revert "Mark vastart_save_xmm_regs as changing EFLAGS"" · 512601d7
      Duncan P. N. Exon Smith authored
      This reverts commit r197481, recommiting r197469 with an extra fix.
      
      The vastart_save_xmm_regs pseudo-instruction expands to a test and a
      branch, so it modifies EFLAGS.  Mark it so, or else the scheduler might
      place it in the middle of another test+branch.
      
      This fixes a bug exposed by r192750, which changed the initial scheduler
      to source-order as part of enabling the MI Scheduler for X86.
      
      This re-commit changes the VASTART_SAVE_XMM_REGS custom inserter not to
      try to save %flags, and adds a test that catches the bad behavior of
      r197469.
      
      <rdar://problem/15627766>
      
      llvm-svn: 197503
      512601d7
    • Rafael Espindola's avatar
      Fix the pointer size for the PS3 datalayout. · 345d718d
      Rafael Espindola authored
      This will be tested from clang.
      
      llvm-svn: 197501
      345d718d
    • Stepan Dyatkovskiy's avatar
      Fix for PR18045: · 7f7c2710
      Stepan Dyatkovskiy authored
      http://llvm.org/bugs/show_bug.cgi?id=18045
      
      Short issue description:
      For X86 machines with sse < sse4.1 we got failures for some
      particular load/store vector sequences:
      
      $ clang-trunk -m32 -O2 test-case.c
      fatal error: error in backend: Cannot select: 0x4200920: v4i32,ch = load 0x41d6ab0, 0x4205850,
            0x41dcb10<LD16[getelementptr inbounds ([4 x i32]* @e, i32 0, i32 0)](align=4)> [ORD=82]
            [ID=58]
        0x4205850: i32 = X86ISD::Wrapper 0x41d5490 [ORD=26] [ID=43]
          0x41d5490: i32 = TargetGlobalAddress<[4 x i32]* @e> 0 [ORD=26] [ID=23]
        0x41dcb10: i32 = undef [ID=2]
      
      The reason is that EltsFromConsecutiveLoads could emit such load instruction
      both before and after legalize stage. Though this instruction is not legal for
      machines with SSSE3 and lower.
      
      The fix: In EltsFromConsecutiveLoads, if we have passed legalize stage, we
      check whether nodes it emits are legal. 
      
      P.S.: If you get failure in time from 12:00 and till 22:00 (UTC-8),
      perhaps I'll slow with response, so you better reject this commit. Thanks!
      
      llvm-svn: 197492
      7f7c2710
    • Yaron Keren's avatar
      There are no __register_frame and __deregister_frame functions · 7da8e45b
      Yaron Keren authored
      when using structured exception handling (SEH) on Windows 64.
      
      http://llvm-reviews.chandlerc.com/D2378
      
      Patch by Jonathan Liu!
      
      llvm-svn: 197483
      7da8e45b
    • Elena Demikhovsky's avatar
      AVX-512: Added implementation of CONCAT_VECTORS for v8i1 vectors (by Alexey Bader). · c5f6726a
      Elena Demikhovsky authored
      Added implementation of "truncate" from integer type (i64/i32/i16/i8) to i1.
      
      llvm-svn: 197482
      c5f6726a
    • Duncan P. N. Exon Smith's avatar
      Revert "Mark vastart_save_xmm_regs as changing EFLAGS" · b2d4274d
      Duncan P. N. Exon Smith authored
      This reverts commit r197469.
      
      The sanitizer and dragonegg buildbots are failing, I think because of
      this change.  Reverting until I figure out why.
      
      llvm-svn: 197481
      b2d4274d
    • Duncan P. N. Exon Smith's avatar
      Mark vastart_save_xmm_regs as changing EFLAGS · a4acde39
      Duncan P. N. Exon Smith authored
      The vastart_save_xmm_regs pseudo-instruction expands to a test and a
      branch, so it modifies EFLAGS.  Mark it so, or else the scheduler might
      place it in the middle of another test+branch.
      
      This fixes a bug exposed by r192750, which turned on the MI Scheduler
      for X86.
      
      <rdar://problem/15627766>
      
      llvm-svn: 197469
      a4acde39
    • Andrew Trick's avatar
      Allow MachineCSE to coalesce trivial subregister copies the same way that it... · e339828b
      Andrew Trick authored
      Allow MachineCSE to coalesce trivial subregister copies the same way that it coalesces normal copies.
      
      Without this, MachineCSE is powerless to handle redundant operations with truncated source operands.
      
      This required fixing the 2-addr pass to handle tied subregisters. It isn't clear what combinations of subregisters can legally be tied, but the simple case of truncated source operands is now safely handled:
      
           %vreg11<def> = COPY %vreg1:sub_32bit; GR32:%vreg11 GR64:%vreg1
           %vreg12<def> = COPY %vreg2:sub_32bit; GR32:%vreg12 GR64:%vreg2
           %vreg13<def,tied1> = ADD32rr %vreg11<tied0>, %vreg12<kill>, %EFLAGS<imp-def>
      
      Test case: cse-add-with-overflow.ll.
      
      This exposed an existing bug in
      PPCInstrInfo::commuteInstruction. Thanks to Rafael for the test case:
      PowerPC/crash.ll.
      
      llvm-svn: 197465
      e339828b
    • Andrew Trick's avatar
      whitespace · 9defbd88
      Andrew Trick authored
      llvm-svn: 197464
      9defbd88
    • Jim Grosbach's avatar
      Make comment more explicit. · 04caa273
      Jim Grosbach authored
      Re-reading the comment I updated in previous commit, it's better to make
      it more explicit and avoid ambiguity more effectively.
      
      llvm-svn: 197458
      04caa273
    • Jim Grosbach's avatar
      Typo. s/reserved/preserved/ · dde043b3
      Jim Grosbach authored
      llvm-svn: 197457
      dde043b3
    • Jim Grosbach's avatar
      Add a machine code print in DEBUG() following instruction selection. · ea2db453
      Jim Grosbach authored
      Make debugging ISel a bit easier by printing out a dump of the generated
      code at the end.
      
      llvm-svn: 197456
      ea2db453
    • Quentin Colombet's avatar
    • Arnold Schwaighofer's avatar
      LoopVectorizer: Don't if-convert constant expressions that can trap · 50b8302c
      Arnold Schwaighofer authored
      A phi node operand or an instruction operand could be a constant expression that
      can trap (division). Check that we don't vectorize such cases.
      
      PR16729
      radar://15653590
      
      llvm-svn: 197449
      50b8302c
    • Quentin Colombet's avatar
      [LLVM Diagnostic Capabilities] Remove useless includes from · 0caf4fef
      Quentin Colombet authored
      DiagnosticPrinter.cpp.
      These was creating a link time dependencies of IR on CodeGen and Analysis.
      
      Part of <rdar://problem/15515174>
      
      llvm-svn: 197447
      0caf4fef
    • Quentin Colombet's avatar
      Add warning capabilities in LLVM. · 66673f40
      Quentin Colombet authored
      The patch adds a new LLVMContext::diagnose that can be used to communicate to
      the front-end, if any, that something of interest happened.
      The diagnostics are supported by a new abstraction, the DiagnosticInfo class.
      The base class contains the following information:
      - The kind of the report: What this is about.
      - The severity of the report: How bad this is.
      
      This patch also adds 2 classes:
      - DiagnosticInfoInlineAsm: For inline asm reporting. Basically, this diagnostic
      will be used to switch to the new diagnostic API for LLVMContext::emitError.
      - DiagnosticStackSize: For stack size reporting. Comes as a replacement of the
      hard coded warning in PEI.
      
      This patch also features dynamic diagnostic identifiers. In other words plugins
      can use this infrastructure for their own diagnostics (for more details, see
      getNextAvailablePluginDiagnosticKind).
      
      This patch introduces a new DiagnosticHandlerTy and a new DiagnosticContext in
      the LLVMContext that should be set by the front-end to be able to map these
      diagnostics in its own system.
      
      http://llvm-reviews.chandlerc.com/D2376
      <rdar://problem/15515174>
      
      llvm-svn: 197438
      66673f40
  2. Dec 16, 2013
Loading