Skip to content
  1. Jul 27, 2012
  2. Jul 26, 2012
    • Jordan Rose's avatar
      [analyzer] CallEvent is no longer a value object. · 72ce8e2d
      Jordan Rose authored
      After discussion, the type-based dispatch was decided to be bad for
      maintenance and made it very easy for subtle bugs to creep in. Instead,
      we'll just be very careful when we do have to allocate these on the heap.
      
      llvm-svn: 160817
      72ce8e2d
    • Jakob Stoklund Olesen's avatar
      Eliminate a batch of uses of sub_ss and sub_sd in the X86 target. · ceee4a9d
      Jakob Stoklund Olesen authored
      These idempotent sub-register indices don't do anything --- They simply
      map XMM registers to themselves.  They no longer affect register classes
      either since the SubRegClasses field has been removed from Target.td.
      
      This patch replaces XMM->XMM EXTRACT_SUBREG and INSERT_SUBREG patterns
      with COPY_TO_REGCLASS patterns which simply become COPY instructions.
      
      The number of IMPLICIT_DEF instructions before register allocation is
      reduced, and that is the cause of the test case changes.
      
      llvm-svn: 160816
      ceee4a9d
    • Jordan Rose's avatar
      4f7df9be
    • Micah Villmow's avatar
      Add support for v16i32/v16i64 into the code generator. This is required for... · 7b473d9f
      Micah Villmow authored
      Add support for v16i32/v16i64 into the code generator. This is required for backends that use i32/i64 vectors for the getSetCCResultType function.
      
      llvm-svn: 160814
      7b473d9f
    • Chad Rosier's avatar
      Make comments in Debug.cpp and Debug.h consistent. Rename SetCurrentDebugType; · 7c427c40
      Chad Rosier authored
      Function names should be camel case, and start with a lower case letter.  No
      functional change intended.
      
      llvm-svn: 160813
      7c427c40
    • Howard Hinnant's avatar
      Update CREDITS.TXT · c2e93540
      Howard Hinnant authored
      llvm-svn: 160812
      c2e93540
    • Jordan Rose's avatar
      [analyzer] Don't crash on implicit statements inside initializers. · 25bc20f8
      Jordan Rose authored
      Our BugReporter knows how to deal with implicit statements: it looks in
      the ParentMap until it finds a parent with a valid location. However, since
      initializers are not in the body of a constructor, their sub-expressions are
      not in the ParentMap. That was easy enough to fix in AnalysisDeclContext.
      
      ...and then even once THAT was fixed, there's still an extra funny case
      of Objective-C object pointer fields under ARC, which are initialized with
      a top-level ImplicitValueInitExpr. To catch these cases,
      PathDiagnosticLocation will now fall back to the start of the current
      function if it can't find any other valid SourceLocations. This isn't great,
      but it's miles better than a crash.
      
      (All of this is only relevant when constructors and destructors are being
      inlined, i.e. under -cfg-add-initializers and -cfg-add-implicit-dtors.)
      
      llvm-svn: 160810
      25bc20f8
    • Jordan Rose's avatar
      [analyzer] Don't crash on array constructors and destructors. · 20edae87
      Jordan Rose authored
      This workaround is fairly lame: we simulate the first element's constructor
      and destructor and rely on the region invalidation to "initialize" the rest
      of the elements.
      
      llvm-svn: 160809
      20edae87
    • Jordan Rose's avatar
      [analyzer] Handle C++ member initializers and destructors. · 54529a34
      Jordan Rose authored
      This uses CFG to tell if a constructor call is for a member, and uses
      the member's region appropriately.
      
      llvm-svn: 160808
      54529a34
    • Jordan Rose's avatar
      [analyzer] Use the CFG to see if a constructor is for a local variable. · 05375eb4
      Jordan Rose authored
      Previously we were using ParentMap and crawling through the parent DeclStmt.
      This should be at least slightly cheaper (and is also more flexible).
      
      No (intended) functionality change.
      
      llvm-svn: 160807
      05375eb4
    • Jordan Rose's avatar
      [analyzer] Handle base class initializers and destructors. · b970505d
      Jordan Rose authored
      Most of the logic here is fairly simple; the interesting thing is that
      we now distinguish complete constructors from base or delegate constructors.
      We also make sure to cast to the base class before evaluating a constructor
      or destructor, since non-virtual base classes may behave differently.
      
      This includes some refactoring of VisitCXXConstructExpr and VisitCXXDestructor
      in order to keep ExprEngine.cpp as clean as possible (leaving the details for
      ExprEngineCXX.cpp).
      
      llvm-svn: 160806
      b970505d
    • Jordan Rose's avatar
      [analyzer] Variables with destructors are live until the destructor is run. · b3244566
      Jordan Rose authored
      Test case in the next commit, which enables destructors under certain
      circumstances.
      
      llvm-svn: 160805
      b3244566
    • Jordan Rose's avatar
      [analyzer] Show paths for destructor calls. · a4c0d21f
      Jordan Rose authored
      This modifies BugReporter and friends to handle CallEnter and CallExitEnd
      program points that came from implicit call CFG nodes (read: destructors).
      
      This required some extra handling for nested implicit calls. For example,
      the added multiple-inheritance test case has a call graph that looks like this:
      
      testMultipleInheritance3
        ~MultipleInheritance
          ~SmartPointer
          ~Subclass
            ~SmartPointer
              ***bug here***
      
      In this case we correctly notice that we started in an inlined function
      when we reach the CallEnter program point for the second ~SmartPointer.
      However, when we reach the next CallEnter (for ~Subclass), we were
      accidentally re-using the inner ~SmartPointer call in the diagnostics.
      
      Rather than guess if we saw the corresponding CallExitEnd based on the
      contents of the active path, we now just ask the PathDiagnostic if there's
      any known stack before popping off the top path.
      
      (A similar issue could have occured without multiple inheritance, but there
      wasn't a test case for it.)
      
      llvm-svn: 160804
      a4c0d21f
    • Jordan Rose's avatar
      [analyzer] Inline ctors + dtors when the CFG is built for them. · c5d85244
      Jordan Rose authored
      At the very least this means initializer nodes for constructors and
      automatic object destructors are present in the CFG.
      
      llvm-svn: 160803
      c5d85244
    • Jordan Rose's avatar
      [analyzer] PostImplicitCall can also occur between CFGElements. · 443ec10e
      Jordan Rose authored
      This avoids an assertion crash when we invalidate on a destructor call
      instead of inlining it.
      
      llvm-svn: 160802
      443ec10e
    • Jordan Rose's avatar
      Add a const version of Expr::IgnoreImplicit. No functionality change. · 77c28aaa
      Jordan Rose authored
      llvm-svn: 160801
      77c28aaa
    • Jordan Rose's avatar
      Un-break standalone invocations of CmpRuns.py. · 5920a1bd
      Jordan Rose authored
      Fallout from CmpRuns.py API changes in r160314.
      
      llvm-svn: 160800
      5920a1bd
    • Howard Hinnant's avatar
      Patch by Andrew C. Morrow: shims to work around macroized getc and putc on... · c904ad45
      Howard Hinnant authored
      Patch by Andrew C. Morrow:  shims to work around macroized getc and putc on linux.  On my eglibc 2.13 based Debian system 'getc' is a macro defined in
      /usr/include/stdio.h. This decision to make it a macro doesn't seem to
      be guarded by any feature test macro as far as I can see.
      
      llvm-svn: 160799
      c904ad45
    • Jakob Stoklund Olesen's avatar
      Use an otherwise unused variable. · 35400b1d
      Jakob Stoklund Olesen authored
      llvm-svn: 160798
      35400b1d
    • Dmitry Vyukov's avatar
      tsan: make the runtime library name tsan-neutral for Go upstream · 65ec6684
      Dmitry Vyukov authored
      llvm-svn: 160797
      65ec6684
    • Jakob Stoklund Olesen's avatar
      Start scaffolding for a MachineTraceMetrics analysis pass. · f9029fef
      Jakob Stoklund Olesen authored
      This is still a work in progress.
      
      Out-of-order CPUs usually execute instructions from multiple basic
      blocks simultaneously, so it is necessary to look at longer traces when
      estimating the performance effects of code transformations.
      
      The MachineTraceMetrics analysis will pick a typical trace through a
      given basic block and provide performance metrics for the trace. Metrics
      will include:
      
      - Instruction count through the trace.
      - Issue count per functional unit.
      - Critical path length, and per-instruction 'slack'.
      
      These metrics can be used to determine the performance limiting factor
      when executing the trace, and how it will be affected by a code
      transformation.
      
      Initially, this will be used by the early if-conversion pass.
      
      llvm-svn: 160796
      f9029fef
    • Jim Ingham's avatar
      Relax the test for "is the frame I am going to step back out to the one I... · 5f1a4e1f
      Jim Ingham authored
      Relax the test for "is the frame I am going to step back out to the one I started from" in ThreadPlanStepOverRange so you don't
      artificially reject stepping out of a function you stepped into when stepping through an inlined range.  
      
      Also fill in the target in the symbol context we make up for the inlined stepping range in ThreadPlanStepOut.
      
      <rdar://problem/11765912>
      
      llvm-svn: 160794
      5f1a4e1f
    • Dan Gohman's avatar
      Add a floor intrinsic. · 0b3d7829
      Dan Gohman authored
      llvm-svn: 160791
      0b3d7829
    • Howard Hinnant's avatar
      Patch by Andrew C. Morrow: Conditionally include cxxabi.h in new.cpp and... · dce0696a
      Howard Hinnant authored
      Patch by Andrew C. Morrow:  Conditionally include cxxabi.h in new.cpp and typeinfo.cpp.  Both new.cpp and typeinfo.cpp have code that is conditionally compiled
      based on the LIBCXXRT and _LIBCPPABI_VERSION defines, but those files
      do not currently include <cxxabi.h> in the non __APPLE__ case. The
      attached patch updates those files so that for non __APPLE__ builds
      <cxxabi.h> is included if available or if LIBCXXRT is set. I'm
      modeling this on the recent updates to exception.cpp.
      
      llvm-svn: 160790
      dce0696a
Loading