Skip to content
  1. Oct 29, 2012
    • Quentin Colombet's avatar
      Revert commit r166946 · ee3e0fb6
      Quentin Colombet authored
      llvm-svn: 166957
      ee3e0fb6
    • Richard Smith's avatar
      Partially roll back r166898; it exposed a bug in the standard. · bf83009c
      Richard Smith authored
      The problem is as follows: C++11 has contexts which are not
      potentially-evaluated, and yet in which we are required or encouraged to
      perform constant evaluation. In such contexts, we are not permitted to
      implicitly define special member functions for literal types, therefore
      we cannot evalaute those constant expressions.
      
      Punt on this in one more context for now by skipping checking constexpr
      variable initializers if they occur in dependent contexts.
      
      llvm-svn: 166956
      bf83009c
    • Quentin Colombet's avatar
      Make forcesizeopt attribute available to the end user · 0d6b5e5f
      Quentin Colombet authored
      llvm-svn: 166946
      0d6b5e5f
    • Jordan Rose's avatar
      -Warc-repeated-use-of-weak: allow single reads in loops from local variables. · 25c0ea89
      Jordan Rose authored
      Previously, the warning would erroneously fire on this:
      
      for (Test *a in someArray)
        use(a.weakProp);
      
      ...because it looks like the same property is being accessed over and over.
      However, clearly this is not the case. We now ignore loops like this for
      local variables, but continue to warn if the base object is a parameter,
      global variable, or instance variable, on the assumption that these are
      not repeatedly usually assigned to within loops.
      
      Additionally, do-while loops where the condition is 'false' are not really
      loops at all; usually they're just used for semicolon-swallowing macros or
      using "break" like "goto".
      
      <rdar://problem/12578785&12578849>
      
      llvm-svn: 166942
      25c0ea89
    • Jordan Rose's avatar
      [analyzer] New option to not suppress null return paths if an argument is null. · ec44ac6a
      Jordan Rose authored
      Our one basic suppression heuristic is to assume that functions do not
      usually return NULL. However, when one of the arguments is NULL it is
      suddenly much more likely that NULL is a valid return value. In this case,
      we don't suppress the report here, but we do attach /another/ visitor to
      go find out if this NULL argument also comes from an inlined function's
      error path.
      
      This new behavior, controlled by the 'avoid-suppressing-null-argument-paths'
      analyzer-config option, is turned off by default. Turning it on produced
      two false positives and no new true positives when running over LLVM/Clang.
      
      This is one of the possible refinements to our suppression heuristics.
      <rdar://problem/12350829>
      
      llvm-svn: 166941
      ec44ac6a
    • Jordan Rose's avatar
      [analyzer] Use the CallEnter node to get a value for tracked null arguments. · 199fdd82
      Jordan Rose authored
      Additionally, don't collect PostStore nodes -- they are often used in
      path diagnostics.
      
      Previously, we tried to track null arguments in the same way as any other
      null values, but in many cases the necessary nodes had already been
      collected (a memory optimization in ExplodedGraph). Now, we fall back to
      using the value of the argument at the time of the call, which may not
      always match the actual contents of the region, but often will.
      
      This is a precursor to improving our suppression heuristic.
      <rdar://problem/12350829>
      
      llvm-svn: 166940
      199fdd82
    • Bill Schmidt's avatar
      This patch adds alignment information for long double to the 64-bit PowerPC · cec4cb15
      Bill Schmidt authored
      ELF subtarget.
      
      The existing description string is moved from PPC64TargetInfo to its
      DarwinTargetInfo subclass, to avoid any changes to the Darwin ABI.
      PPC64TargetInfo now has two possible description strings: one for FreeBSD,
      which requires 8-byte alignment, and a default string that requires
      16-byte alignment.
      
      I've added a test for PPC64 Linux to verify the 16-byte alignment.  If
      somebody wants to add a separate test for FreeBSD, that would be great.
      
      Note that there is a companion patch to update the alignment information
      in LLVM, which I am committing now as well.
      
      llvm-svn: 166927
      cec4cb15
    • Ulrich Weigand's avatar
      Handle '*' and '#' asm constraint modifiers. · 7bcc7ec7
      Ulrich Weigand authored
      llvm-svn: 166924
      7bcc7ec7
    • Daniel Jasper's avatar
      Implement has(), hasDescendant(), forEach() and forEachDescendant() for · d29d5fa3
      Daniel Jasper authored
      Types, QualTypes and TypeLocs.
      
      Review: http://llvm-reviews.chandlerc.com/D83
      llvm-svn: 166917
      d29d5fa3
    • Nick Lewycky's avatar
      Remove spurious mode marker from .cpp file. · 461a08d7
      Nick Lewycky authored
      llvm-svn: 166915
      461a08d7
  2. Oct 28, 2012
  3. Oct 27, 2012
  4. Oct 26, 2012
    • Fariborz Jahanian's avatar
      Remove BLOCK_BYREF_LAYOUT_BYREF flags from list of · 5f8d3242
      Fariborz Jahanian authored
      flags for __block variable meta-data.
      
      llvm-svn: 166811
      5f8d3242
    • Fariborz Jahanian's avatar
      objective-C IRGen: for @implementation nested in · 2d26c29e
      Fariborz Jahanian authored
      extern "C", its method definitions must be IRGen'ed
      before meta-data for class is generated. Otherwise,
      IRGen crashes (to say the least).
      // rdar://12581683 
      
      llvm-svn: 166809
      2d26c29e
    • Argyrios Kyrtzidis's avatar
      [driver] Before applying the working directory check if the input path · c2c77c42
      Argyrios Kyrtzidis authored
      is absolute.
      
      llvm-svn: 166808
      c2c77c42
    • Bill Schmidt's avatar
      This patch addresses a 64-bit PowerPC ELF ABI compatibility issue with · 4a2dcfe5
      Bill Schmidt authored
      varargs parameter passing.
      
      A strict reading of the ABI indicates that any argument with alignment greater
      than 8 may require skipping doublewords in the parameter save area to align
      the argument, and hence require skipping GPRs.  In practice, this is not done
      by GCC.  The alignment restriction is used for internal alignment of a
      structure, but a structure with 16-byte alignment, for example, is not
      itself 16-byte aligned in the parameter save area.  Although this is messy,
      it has become the de facto standard used in building existing libraries.
      
      My initial varargs support followed the ABI language, but not the de facto
      standard.  Running the GCC compatibility test suite exposed this issue, and
      indeed showed that LLVM didn't pass parameters self-consistently with my
      original logic.  Removing the additional alignment logic allows the affected
      tests to now pass.
      
      I modified the ppc64-varargs-struct.c test case to remove the existing test
      for generation of alignment code, which is no longer appropriate.
      
      Built and tested on powerpc64-unknown-linux-gnu with no new regressions.
      
      llvm-svn: 166805
      4a2dcfe5
Loading