Skip to content
  1. Aug 11, 2012
    • Jakob Stoklund Olesen's avatar
      Add a proper if-conversion cost model. · bc55bfde
      Jakob Stoklund Olesen authored
      Detect when there is not enough available ILP, so if-conversion can't
      speculate instructions for free.
      
      Compute the lengthening of the critical path when inserting a select
      instruction that depends on the condition as well as both sides of the
      if.
      
      Reject conversions that would stretch the critical path by more than
      half a mispredict penalty.
      
      llvm-svn: 161713
      bc55bfde
    • Jakob Stoklund Olesen's avatar
      Give MachineTraceMetrics its own debug tag. · a0042acd
      Jakob Stoklund Olesen authored
      llvm-svn: 161712
      a0042acd
    • Jakob Stoklund Olesen's avatar
      Add more trace query functions. · 34844209
      Jakob Stoklund Olesen authored
      Trace::getResourceLength() computes the number of cycles required to
      execute the trace when ignoring data dependencies. The number can be
      compared to the critical path to estimate the trace ILP.
      
      Trace::getPHIDepth() computes the data dependency depth of a PHI in a
      trace successor that isn't necessarily part of the trace.
      
      llvm-svn: 161711
      34844209
    • Jordan Rose's avatar
      [analyzer] Strip CXXBaseObjectRegions when devirtualizing method calls. · 02e5309b
      Jordan Rose authored
      This was causing a crash when we tried to re-apply a base object region to
      itself. It probably also caused incorrect offset calculations in RegionStore.
      
      PR13569 / <rdar://problem/12076683>
      
      llvm-svn: 161710
      02e5309b
    • Jordan Rose's avatar
      [analyzer] Try to devirtualize even if the static callee has no definition. · 51bcb226
      Jordan Rose authored
      This mostly affects pure virtual methods, but would also affect parent
      methods defined inline in the header when analyzing the child's source file.
      
      llvm-svn: 161709
      51bcb226
    • Jordan Rose's avatar
      [analyzer] Add clang_analyzer_checkInlined for debugging purposes. · 13937b1d
      Jordan Rose authored
      This check is also accessible through the debug.ExprInspection checker.
      Like clang_analyzer_eval, you can use it to test the analyzer engine's
      current state; the argument should be true or false to indicate whether or
      not you expect the function to be inlined.
      
      When used in the positive case (clang_analyzer_checkInlined(true)), the
      analyzer prints the message "TRUE" if the function is ever inlined. However,
      clang_analyzer_checkInlined(false) should never print a message; this asserts
      that there should be no paths on which the current function is inlined, but
      then there are no paths on which to print a message! (If the assertion is
      violated, the message "FALSE" will be printed.)
      
      This asymmetry comes from the fact that the only other chance to print a
      message is when the function is analyzed as a top-level function. However,
      when we do that, we can't be sure it isn't also inlined elsewhere (such as
      in a recursive function, or if we want to analyze in both general or
      specialized cases). Rather than have all checkInlined calls have an appended,
      meaningless "FALSE" or "TOP-LEVEL" case, there is just no message printed.
      
      void clang_analyzer_checkInlined(int);
      
      For debugging purposes only!
      
      llvm-svn: 161708
      13937b1d
    • Fariborz Jahanian's avatar
      objective-C: test for delayed parsing of K&R funcitons · 29622c1f
      Fariborz Jahanian authored
      inside objc class implementation. // rdar://10387088
      
      llvm-svn: 161705
      29622c1f
  2. Aug 10, 2012
Loading