Skip to content
  1. Aug 08, 2013
  2. Aug 07, 2013
  3. Aug 06, 2013
    • Manman Ren's avatar
      Debug Info Finder|Verifier: handle DbgLoc attached to instructions. · b75e0c92
      Manman Ren authored
      Also remove checking of llvm.dbg.sp since it is not used in generating dwarf.
      
      Current state of Finder:
      DebugInfoFinder tries to list all debug info MDNodes used in a module. To
      list debug info MDNodes used by an instruction, DebugInfoFinder provides
      processDeclare, processValue and processLocation to handle DbgDeclareInst,
      DbgValueInst and DbgLoc attached to instructions. processModule will go
      through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes
      used by the CUs.
      
      TODO:
      1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We
      need to add a list of variables that are used by DbgDeclareInst and
      DbgValueInst.
      2> MDString fields should be null or isa<MDString> and MDNode fields should be
      null or isa<MDNode>. We currently use empty string or int 0 to represent null.
      3> Go though Verify functions and make sure that they check field types.
      4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each
      testing case has a llvm.dbg.cu.
      
      Re-apply r187609 with fix to pass ocaml binding. vmcore.ml generates a debug
      location with scope being metadata !{}, in verifier we treat this as a null
      scope.
      
      llvm-svn: 187812
      b75e0c92
    • Hal Finkel's avatar
      Add PPC64 mulli pattern · 11b9e452
      Hal Finkel authored
      The PPC backend had been missing a pattern to generate mulli for 64-bit
      multiples. We had been generating it only for 32-bit multiplies. Unfortunately,
      generating li + mulld unnecessarily increases register pressure.
      
      llvm-svn: 187807
      11b9e452
    • Mihai Popa's avatar
      This corrects creation of operands for t2PLDW. It also removes the definition of t2PLDWpci, · c34bf73e
      Mihai Popa authored
      as pldw does not have a literal variant (i.e. pc relative version)
      
      llvm-svn: 187804
      c34bf73e
    • Mihai Popa's avatar
    • Justin Holewinski's avatar
      [NVPTX] Add missing patterns for i1 [s,u]int_to_fp · debe686f
      Justin Holewinski authored
      llvm-svn: 187800
      debe686f
    • Justin Holewinski's avatar
      [NVPTX] Fix bug in stack code generation causes by MC conversion · 871ec939
      Justin Holewinski authored
      We do use a very small set of physical registers, so account for
      them in the virtual register encoding between MachineInstr and MC
      
      llvm-svn: 187799
      871ec939
    • Justin Holewinski's avatar
      [NVPTX] Start conversion to MC infrastructure · a2a63d28
      Justin Holewinski authored
      This change converts the NVPTX target to use the MC infrastructure
      instead of directly emitting MachineInstr instances. This brings
      the target more up-to-date with LLVM TOT, and should fix PR15175
      and PR15958 (libNVPTXInstPrinter is empty) as a side-effect.
      
      llvm-svn: 187798
      a2a63d28
    • Tim Northover's avatar
      ARM: implement allowTruncateForTailCall · cc2e903b
      Tim Northover authored
      Now that it's in place, it seems silly not to let ARM make use of the extra
      tail call opportunities.
      
      llvm-svn: 187795
      cc2e903b
    • Elena Demikhovsky's avatar
      LLVM Interpreter: fixed bug 16694 · 63bd63e4
      Elena Demikhovsky authored
      fix for: Bug 16694 - ExecutionEngine/test-interp-vec-loadstore.ll failing on powerpc-darwin8 (http://llvm.org/bugs/show_bug.cgi?id=16694)
      The ExecutionEngine/test-interp-vec-loadstore.ll test has been failing on powerpc-darwin8 (on other platforms it passed)
      
      the reason of fail was wrong output by printf. this output is checked by FileCheck, but on little-endian powerpc the output numeric data were printed inside out and FileCheck reported fail.
      the printfs have been replaced by checking data inside test and numeric output has been replaced by the text output like : "int test passed, float test passed". The text output is checked by FileCheck.
      the dependency on data layout has been removed.
      
      done by Yuri Veselov (Intel)
      
      llvm-svn: 187791
      63bd63e4
    • Tim Northover's avatar
      Refactor isInTailCallPosition handling · a4415854
      Tim Northover authored
      This change came about primarily because of two issues in the existing code.
      Niether of:
      
      define i64 @test1(i64 %val) {
        %in = trunc i64 %val to i32
        tail call i32 @ret32(i32 returned %in)
        ret i64 %val
      }
      
      define i64 @test2(i64 %val) {
        tail call i32 @ret32(i32 returned undef)
        ret i32 42
      }
      
      should be tail calls, and the function sameNoopInput is responsible. The main
      problem is that it is completely symmetric in the "tail call" and "ret" value,
      but in reality different things are allowed on each side.
      
      For these cases:
      1. Any truncation should lead to a larger value being generated by "tail call"
         than needed by "ret".
      2. Undef should only be allowed as a source for ret, not as a result of the
         call.
      
      Along the way I noticed that a mismatch between what this function treats as a
      valid truncation and what the backends see can lead to invalid calls as well
      (see x86-32 test case).
      
      This patch refactors the code so that instead of being based primarily on
      values which it recurses into when necessary, it starts by inspecting the type
      and considers each fundamental slot that the backend will see in turn. For
      example, given a pathological function that returned {{}, {{}, i32, {}}, i32}
      we would consider each "real" i32 in turn, and ask if it passes through
      unchanged. This is much closer to what the backend sees as a result of
      ComputeValueVTs.
      
      Aside from the bug fixes, this eliminates the recursion that's going on and, I
      believe, makes the bulk of the code significantly easier to understand. The
      trade-off is the nasty iterators needed to find the real types inside a
      returned value.
      
      llvm-svn: 187787
      a4415854
    • Tom Stellard's avatar
      Factor FlattenCFG out from SimplifyCFG · aa664d9b
      Tom Stellard authored
      Patch by: Mei Ye
      
      llvm-svn: 187764
      aa664d9b
    • Bill Wendling's avatar
      FileCheckize some of the testcases. · dc172709
      Bill Wendling authored
      llvm-svn: 187756
      dc172709
Loading