]> granicus.if.org Git - clang/log
clang
11 years agoAlign comments to surrounding unformatted comments.
Daniel Jasper [Fri, 22 Mar 2013 16:25:51 +0000 (16:25 +0000)]
Align comments to surrounding unformatted comments.

Before:
int a; // not formatted
// formatting this line only

After:
int a; // not formatted
       // formatting this line only

This makes clang-format stable independent of whether the whole
file or single lines are formatted in most cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177739 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[cxxabi] Get ptrdiff_t from the CodeGenModule instead of caching it
Reid Kleckner [Fri, 22 Mar 2013 16:13:10 +0000 (16:13 +0000)]
[cxxabi] Get ptrdiff_t from the CodeGenModule instead of caching it

As the comment says, it's a little silly to cache it in the ABI code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177738 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate docs after moving clang-format from clang-tools-extra to cfe.
Daniel Jasper [Fri, 22 Mar 2013 12:44:20 +0000 (12:44 +0000)]
Update docs after moving clang-format from clang-tools-extra to cfe.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177729 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd clang-format to the corresponding Makefile.
Daniel Jasper [Fri, 22 Mar 2013 11:43:51 +0000 (11:43 +0000)]
Add clang-format to the corresponding Makefile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177727 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMore precisely recognize ObjC method declarations.
Daniel Jasper [Fri, 22 Mar 2013 10:44:43 +0000 (10:44 +0000)]
More precisely recognize ObjC method declarations.

Otherwise, +/- and the beginning of constants can be recognized
incorrectly.

Before:  #define A - 1
After:   #define A -1

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177725 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDocumentation: fix a typo and formatting
Dmitri Gribenko [Fri, 22 Mar 2013 10:25:15 +0000 (10:25 +0000)]
Documentation: fix a typo and formatting

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177722 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix DeclRefExpr::getFoundDecl() for usages by reference.
Daniel Jasper [Fri, 22 Mar 2013 10:01:35 +0000 (10:01 +0000)]
Fix DeclRefExpr::getFoundDecl() for usages by reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177721 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake clang-format understand more line comments.
Daniel Jasper [Fri, 22 Mar 2013 10:01:29 +0000 (10:01 +0000)]
Make clang-format understand more line comments.

Apparently one needs to set LangOptions.LineComment.

Before "//* */" got reformatted to "/ /* */" as the lexer was returning
the token sequence (slash, comment). This could also lead to weird other
stuff, e.g. for people that like to using comments like:
//****************

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177720 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd future directions for modules
Douglas Gregor [Fri, 22 Mar 2013 07:08:56 +0000 (07:08 +0000)]
Add future directions for modules

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177707 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMore modules documentation, including the straw-man import declaration syntax and...
Douglas Gregor [Fri, 22 Mar 2013 07:05:07 +0000 (07:05 +0000)]
More modules documentation, including the straw-man import declaration syntax and "how to modularize a platform".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177706 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoOpenMP threadprivate directive parsing and semantic analysis
Alexey Bataev [Fri, 22 Mar 2013 06:34:35 +0000 (06:34 +0000)]
OpenMP threadprivate directive parsing and semantic analysis

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177705 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMore documentation on the module map language.
Douglas Gregor [Fri, 22 Mar 2013 06:21:35 +0000 (06:21 +0000)]
More documentation on the module map language.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177704 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agotest commit
Alexey Bataev [Fri, 22 Mar 2013 05:24:29 +0000 (05:24 +0000)]
test commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177701 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoWarn about attempts to reinterpret_cast between two types that are
John McCall [Fri, 22 Mar 2013 02:58:14 +0000 (02:58 +0000)]
Warn about attempts to reinterpret_cast between two types that are
hierarchy-related at a possibly nonzero offset.

Patch by Alexander Zinenko!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177698 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a crash-on-valid where a block capture copy expression was
John McCall [Fri, 22 Mar 2013 02:10:40 +0000 (02:10 +0000)]
Fix a crash-on-valid where a block capture copy expression was
picking up cleanups from earlier in the statement.  Also fix a
crash-on-invalid where a reference to an invalid decl from an
enclosing scope was causing an expression to fail to build, but
only *after* a cleanup was registered from that statement,
causing an assertion downstream.

The crash-on-valid is rdar://13459289.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177692 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoubsan: Pass floating-point arguments to the runtime by value if they fit the
Richard Smith [Fri, 22 Mar 2013 00:47:07 +0000 (00:47 +0000)]
ubsan: Pass floating-point arguments to the runtime by value if they fit the
value argument. If not, be sure we don't accidentally use a dynamic alloca.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177690 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13479214> Make Clang's <stddef.h> robust against system headers defin...
Douglas Gregor [Fri, 22 Mar 2013 00:10:49 +0000 (00:10 +0000)]
<rdar://problem/13479214> Make Clang's <stddef.h> robust against system headers defining size_t/ptrdiff_t/wchar_t.

Clang's <stddef.h> provides definitions for the C standard library
types size_t, ptrdiff_t, and wchar_t. However, the system's C standard
library headers tend to provide the same typedefs, and the two
generally avoid each other using the macros
_SIZE_T/_PTRDIFF_T/_WCHAR_T. With modules, however, we need to see
*all* of the places where these types are defined, so provide the
typedefs (ignoring the macros) when modules are enabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177686 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] scan-build: emit errors on stderr, and exit(1) instead of exit(0).
Jordan Rose [Thu, 21 Mar 2013 23:14:26 +0000 (23:14 +0000)]
[analyzer] scan-build: emit errors on stderr, and exit(1) instead of exit(0).

PR14963

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177678 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate debug info test case for more incoming DIBuilder changes
David Blaikie [Thu, 21 Mar 2013 23:07:47 +0000 (23:07 +0000)]
Update debug info test case for more incoming DIBuilder changes

Switching the DIFile field in DISubprogram to refer to the raw
filename/directory pair instead of a DIFile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177676 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate debug info test case for an incoming change to DIBuilder in LLVM
David Blaikie [Thu, 21 Mar 2013 22:28:46 +0000 (22:28 +0000)]
Update debug info test case for an incoming change to DIBuilder in LLVM

(this will produce some transient test failure/skew)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177673 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13477190> Give the Clang module cache directory some structure, so...
Douglas Gregor [Thu, 21 Mar 2013 21:48:48 +0000 (21:48 +0000)]
<rdar://problem/13477190> Give the Clang module cache directory some structure, so it's easier to find.

We now put the Clang module cache in
<system-temp-directory>/org.llvm.clang/ModuleCache. Perhaps some day
there will be other caches under <system-temp-directory>/org.llvm.clang>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177671 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix indentation
David Blaikie [Thu, 21 Mar 2013 21:35:15 +0000 (21:35 +0000)]
Fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177665 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoObjective-C: Tighten the rules when warning
Fariborz Jahanian [Thu, 21 Mar 2013 20:50:53 +0000 (20:50 +0000)]
Objective-C: Tighten the rules when warning
is issused for on overriding 'readwrite'
property which is not auto-synthesized.
Buttom line is that if hueristics determine
that there will be a user implemented setter,
no warning will be issued. // rdar://13388503

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177662 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoGeneralize debug info tests to be forward compatible with future DISubprogram changes
David Blaikie [Thu, 21 Mar 2013 20:20:15 +0000 (20:20 +0000)]
Generalize debug info tests to be forward compatible with future DISubprogram changes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177659 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThis ugly regex is required because on Windows, the paths come out as \\ delimited...
Aaron Ballman [Thu, 21 Mar 2013 20:12:19 +0000 (20:12 +0000)]
This ugly regex is required because on Windows, the paths come out as \\ delimited instead of / delimited.  Fixes a test breakage since r176894.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177658 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove unused variable.
Benjamin Kramer [Thu, 21 Mar 2013 19:47:38 +0000 (19:47 +0000)]
Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177657 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAvoid warnings from compilers that think you can drop off the end of a fully covered...
Benjamin Kramer [Thu, 21 Mar 2013 19:45:46 +0000 (19:45 +0000)]
Avoid warnings from compilers that think you can drop off the end of a fully covered switch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177656 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDelayed template parsing is not supported by the AST serialization system yet, so...
Aaron Ballman [Thu, 21 Mar 2013 19:38:59 +0000 (19:38 +0000)]
Delayed template parsing is not supported by the AST serialization system yet, so turning it off.  This fixes a test breakage caused by r177336.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177655 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Print return values from debug.DumpCalls checker.
Jordan Rose [Thu, 21 Mar 2013 18:16:59 +0000 (18:16 +0000)]
[analyzer] Print return values from debug.DumpCalls checker.

Debug utility only, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177649 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoBetter block comment formatting.
Alexander Kornienko [Thu, 21 Mar 2013 12:28:10 +0000 (12:28 +0000)]
Better block comment formatting.

Summary:
1. When splitting one-line block comment, use indentation and *s.
2. Remove trailing whitespace from all lines of a comment, not only the ones being splitted.
3. Add backslashes for all lines if a comment is used insed a preprocessor directive.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D557

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177635 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ASan] Let the users to invoke `clang -fsanitize=address` to link binaries targeting...
Alexander Potapenko [Thu, 21 Mar 2013 10:49:06 +0000 (10:49 +0000)]
[ASan] Let the users to invoke `clang -fsanitize=address` to link binaries targeting the iOS simulator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177633 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a typo.
Bob Wilson [Thu, 21 Mar 2013 06:09:09 +0000 (06:09 +0000)]
Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177626 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13037793> Allow the names of modules to differ from the name of their...
Douglas Gregor [Thu, 21 Mar 2013 01:08:50 +0000 (01:08 +0000)]
<rdar://problem/13037793> Allow the names of modules to differ from the name of their subdirectory in the include path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177621 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFurther weaken block conversion rules to permit blocks with
John McCall [Thu, 21 Mar 2013 00:10:07 +0000 (00:10 +0000)]
Further weaken block conversion rules to permit blocks with
enum return type to be converted to blocks with any integer type
of the same size.

rdar://13463504

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177613 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd more testing cases for tbaa.struct
Manman Ren [Thu, 21 Mar 2013 00:09:50 +0000 (00:09 +0000)]
Add more testing cases for tbaa.struct

Testing cases for structs of structs and unions of structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177612 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDebug info - generalize namespace test to not depend on a DW_TAG_file_type entry
David Blaikie [Wed, 20 Mar 2013 23:57:15 +0000 (23:57 +0000)]
Debug info - generalize namespace test to not depend on a DW_TAG_file_type entry

This isn't necessary & with the next change to LLVM the DW_TAG_file_type entry
won't be emitted at all - only the raw filename/directory pair, so match on
that directly instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177609 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSplit ubsan runtime into three pieces (clang part):
Richard Smith [Wed, 20 Mar 2013 23:49:07 +0000 (23:49 +0000)]
Split ubsan runtime into three pieces (clang part):
 * libclang_rt-san-* is sanitizer_common, and is linked in only if no other
   sanitizer runtime is present.
 * libclang_rt-ubsan-* is the piece of the runtime which doesn't depend on
   a C++ ABI library, and is always linked in.
 * libclang_rt-ubsan_cxx-* is the piece of the runtime which depends on a
   C++ ABI library, and is only linked in when linking a C++ binary.

This change also switches us to using -whole-archive for the ubsan runtime
(which is made possible by the above split), and switches us to only linking
the sanitizer runtime into the main binary and not into DSOs (which is made
possible by using -whole-archive).

The motivation for this is to only link a single copy of sanitizer_common
into any binary. This is becoming important now because we want to share
more state between multiple sanitizers in the same process (for instance,
we want a single shared output mutex).

The Darwin ubsan runtime is unchanged; because we use a DSO there, we don't
need this complexity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177605 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-cxxabi] Mangle function pointer template arguments correctly
Reid Kleckner [Wed, 20 Mar 2013 22:29:42 +0000 (22:29 +0000)]
[ms-cxxabi] Mangle function pointer template arguments correctly

Reviewers: rjmccall

CC: timurrrr, llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D554

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177589 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Appease buildbots: include template arguments in base class ref.
Jordan Rose [Wed, 20 Mar 2013 21:44:17 +0000 (21:44 +0000)]
[analyzer] Appease buildbots: include template arguments in base class ref.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177583 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDocumentation cleanup for MacroInfo.
James Dennett [Wed, 20 Mar 2013 21:30:03 +0000 (21:30 +0000)]
Documentation cleanup for MacroInfo.
* Clarify what MacroInfo::isBuiltinMacro means, as it really means something
  more like "isMagicalMacro" or "requiresProcessingBeforeExpansion" -- the
  macros defined in "<built-in>" are not considered built-in by this function;
* Escape __LINE__ as \__LINE__ in Doxygen comments so that the underscores
  don't get replaced by *bold* output;
* Turn comments in MacroInfo.cpp into non-Doxygen comments, so that they
  don't result in duplicated/badly formatted Doxygen output;
* Clean up a bunch of \brief formatting, and add a \file comment for
  MacroInfo.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177581 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/12368093> Extend module maps with a 'conflict' declaration, and warn...
Douglas Gregor [Wed, 20 Mar 2013 21:10:35 +0000 (21:10 +0000)]
<rdar://problem/12368093> Extend module maps with a 'conflict' declaration, and warn when a newly-imported module conflicts with an already-imported module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177577 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Don't invalidate globals when there's no call involved.
Jordan Rose [Wed, 20 Mar 2013 20:36:01 +0000 (20:36 +0000)]
[analyzer] Don't invalidate globals when there's no call involved.

This fixes some mistaken condition logic in RegionStore that caused
global variables to be invalidated when /any/ region was invalidated,
rather than only as part of opaque function calls. This was only
being used by CStringChecker, and so users will now see that strcpy()
and friends do not invalidate global variables.

Also, add a test case we don't handle properly: explicitly-assigned
global variables aren't being invalidated by opaque calls. This is
being tracked by <rdar://problem/13464044>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177572 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Track malloc'd memory into struct fields.
Jordan Rose [Wed, 20 Mar 2013 20:35:57 +0000 (20:35 +0000)]
[analyzer] Track malloc'd memory into struct fields.

Due to improper modelling of copy constructors (specifically, their
const reference arguments), we were producing spurious leak warnings
for allocated memory stored in structs. In order to silence this, we
decided to consider storing into a struct to be the same as escaping.
However, the previous commit has fixed this issue and we can now properly
distinguish leaked memory that happens to be in a struct from a buffer
that escapes within a struct wrapper.

Originally applied in r161511, reverted in r174468.
<rdar://problem/12945937>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177571 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Invalidate regions indirectly accessible through const pointers.
Jordan Rose [Wed, 20 Mar 2013 20:35:53 +0000 (20:35 +0000)]
[analyzer] Invalidate regions indirectly accessible through const pointers.

In this case, the value of 'x' may be changed after the call to indirectAccess:

  struct Wrapper {
    int *ptr;
  };

  void indirectAccess(const Wrapper &w);

  void test() {
    int x = 42;
    Wrapper w = { x };

    clang_analyzer_eval(x == 42); // TRUE
    indirectAccess(w);
    clang_analyzer_eval(x == 42); // UNKNOWN
  }

This is important for modelling return-by-value objects in C++, to show
that the contents of the struct are escaping in the return copy-constructor.

<rdar://problem/13239826>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177570 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Remove strip of ElementRegion in CallEvent::invalidateRegions.
Jordan Rose [Wed, 20 Mar 2013 20:35:48 +0000 (20:35 +0000)]
[analyzer] Remove strip of ElementRegion in CallEvent::invalidateRegions.

This is a bit of old code trying to deal with the fact that functions that
take pointers often use them to access an entire array via pointer
arithmetic. However, RegionStore already conservatively assumes you can use
pointer arithmetic to access any part of a region.

Some day we may want to go back to handling this specifically for calls,
but we can do that in the future.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177569 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agorefactoring file/directory for namespace debug info
David Blaikie [Wed, 20 Mar 2013 19:38:29 +0000 (19:38 +0000)]
refactoring file/directory for namespace debug info

(this is a paired commit with an LLVM change to DIBuilder - expect some
buildbot skew/fallout)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177565 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoEnhance debug info namespace test to check for context/scope reference
David Blaikie [Wed, 20 Mar 2013 19:10:57 +0000 (19:10 +0000)]
Enhance debug info namespace test to check for context/scope reference

The #line directive is mostly for backend testing (keeping these files matching
should simplify maintenance somewhat) though the corresponding backend test
improvement/update doesn't verify the file information directly just yet.
Coming in a later iteration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177559 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDo the error recovery for @end only.
Fariborz Jahanian [Wed, 20 Mar 2013 18:45:49 +0000 (18:45 +0000)]
Do the error recovery for @end only.
I am not sure how much we can improve for
when a randon ObjC keyword is thrown into the
ivar decl. block. // rdar://6854840

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177553 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[docs] Point inquisitive users to existing module.map files.
Sean Silva [Wed, 20 Mar 2013 18:37:47 +0000 (18:37 +0000)]
[docs] Point inquisitive users to existing module.map files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177552 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[docs] Prominently note that modules are expemental.
Sean Silva [Wed, 20 Mar 2013 18:37:42 +0000 (18:37 +0000)]
[docs] Prominently note that modules are expemental.

And ask for people to try it out and send us bug reports!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177551 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoObjective-C [qoi] more gracefull recovery when
Fariborz Jahanian [Wed, 20 Mar 2013 18:09:33 +0000 (18:09 +0000)]
Objective-C [qoi] more gracefull recovery when
'}' is missing for the ivar declarations.
// rdar://6854840

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177549 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoPR7256: Provide a fixit for incorrect destructor declarations
David Blaikie [Wed, 20 Mar 2013 17:42:13 +0000 (17:42 +0000)]
PR7256: Provide a fixit for incorrect destructor declarations

Fix by Ismail Pazarbasi (ismail.pazarbasi@gmail.com), review by Dmitri Gribenko.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177546 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix typo and grammaro in modules documentation
Douglas Gregor [Wed, 20 Mar 2013 17:11:13 +0000 (17:11 +0000)]
Fix typo and grammaro in modules documentation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177544 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoOnly introduce the SDKSettings.plist dependency in modules/PCH files that don't depen...
Douglas Gregor [Wed, 20 Mar 2013 16:59:53 +0000 (16:59 +0000)]
Only introduce the SDKSettings.plist dependency in modules/PCH files that don't depend on any other modules or PCH files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177542 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoExploit this-return of a callsite in a this-return function.
Manman Ren [Wed, 20 Mar 2013 16:59:38 +0000 (16:59 +0000)]
Exploit this-return of a callsite in a this-return function.

For constructors/desctructors that return 'this', if there exists a callsite
that returns 'this' and is immediately before the return instruction, make
sure we are using the return value from the callsite.

We don't need to keep 'this' alive through the callsite. It also enables
optimizations in the backend, such as tail call optimization.

Updated from r177211.
rdar://12818789

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177541 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSupport for pointers-to-members usage via .*
Alexander Kornienko [Wed, 20 Mar 2013 16:41:56 +0000 (16:41 +0000)]
Support for pointers-to-members usage via .*

Summary: Added support for pointers-to-members usage via .* and a few tests.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D556

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177537 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove assertion that can be triggered on bad input.
Daniel Jasper [Wed, 20 Mar 2013 15:58:10 +0000 (15:58 +0000)]
Remove assertion that can be triggered on bad input.

clang-format can't do anything useful, so it should leave the remainder
of the line unchanged, but it should not assert/segfault.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177530 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix infinite-loop in unwrapped line parser.
Daniel Jasper [Wed, 20 Mar 2013 15:12:38 +0000 (15:12 +0000)]
Fix infinite-loop in unwrapped line parser.

Discovered when accidentally formatting a python file :-).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177527 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDo not consider comments when adjusting to local indent style.
Daniel Jasper [Wed, 20 Mar 2013 14:31:47 +0000 (14:31 +0000)]
Do not consider comments when adjusting to local indent style.

Before (when only reformatting "int b"):
int a; // comment
       // comment
       int b;

After:
int a; // comment
       // comment
int b;

This also fixes llvm.org/PR15433.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177524 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoReduce penalty for breaks after "(" for functions with parameters.
Daniel Jasper [Wed, 20 Mar 2013 13:53:11 +0000 (13:53 +0000)]
Reduce penalty for breaks after "(" for functions with parameters.

Before:
  aaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
                    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
                    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
After:
  aaaaaaaaaaaaaaaaa(
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177521 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd extra indentation for multiline comparisons.
Daniel Jasper [Wed, 20 Mar 2013 12:37:50 +0000 (12:37 +0000)]
Add extra indentation for multiline comparisons.

This seems to be generally more desired.

Before:
if (aaaaaaaa &&
    bbbbbbbb >
    cccccccc) {}
After:
if (aaaaaaaa &&
    bbbbbbbb >
        cccccccc) {}

Also: Some formatting cleanup on clang-format's files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177514 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't remove all indentation when in #defines.
Daniel Jasper [Wed, 20 Mar 2013 10:23:53 +0000 (10:23 +0000)]
Don't remove all indentation when in #defines.

Otherwise, this can become hard to read.

Before: #define A \
        case 1:
After:  #define A \
           case 1:

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177509 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd clang-format binary to cfe.
Daniel Jasper [Wed, 20 Mar 2013 09:53:23 +0000 (09:53 +0000)]
Add clang-format binary to cfe.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177506 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoImprove formatting of function types in template parameters.
Daniel Jasper [Wed, 20 Mar 2013 09:53:18 +0000 (09:53 +0000)]
Improve formatting of function types in template parameters.

Before: A<int * (int)>;
After:  A<int *(int)>;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177505 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix redundant comparison in gcc::Common::ConstructJob.
Hans Wennborg [Wed, 20 Mar 2013 07:34:27 +0000 (07:34 +0000)]
Fix redundant comparison in gcc::Common::ConstructJob.

We were checking "Arch == llvm::Triple::x86_64 || Arch
== llvm::Triple::x86_64", but the rhs should actually check for
powerpc64.

Found while experimenting with a potential new Clang warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177496 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoWork-in-progress documentation on the experimental modules feature.
Douglas Gregor [Wed, 20 Mar 2013 06:25:14 +0000 (06:25 +0000)]
Work-in-progress documentation on the experimental modules feature.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177491 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove some dead code.
John McCall [Wed, 20 Mar 2013 06:22:14 +0000 (06:22 +0000)]
Remove some dead code.

Patch by Stephen Lin!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177490 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake front-end debug info namespace test frontend-only & more specific without overco...
David Blaikie [Wed, 20 Mar 2013 05:12:06 +0000 (05:12 +0000)]
Make front-end debug info namespace test frontend-only & more specific without overconstraining it

The backend portion of this test will be committed to LLVM's test suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177485 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake sure that Module::ConfigMacrosExhaustive gets initialized and deserialized corre...
Douglas Gregor [Wed, 20 Mar 2013 03:59:18 +0000 (03:59 +0000)]
Make sure that Module::ConfigMacrosExhaustive gets initialized and deserialized correctly.

This fixes regressions introduced in r177466 that caused several
module tests to fail sporadically.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177481 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTeach statement / declaration disambiguation about C++11-style generalized initializers.
Richard Smith [Wed, 20 Mar 2013 03:35:02 +0000 (03:35 +0000)]
Teach statement / declaration disambiguation about C++11-style generalized initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177480 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove the Tools DensMap from the toolchain.
Rafael Espindola [Wed, 20 Mar 2013 03:05:54 +0000 (03:05 +0000)]
Remove the Tools DensMap from the toolchain.

Each toolchain has a set of tools, but they are all of known types. It can
have a linker, an assembler, a "clang" (compile, analyze, ...) a non-clang
compiler, etc.

Instead of keeping a map, just have member variable for each type of tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177479 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThe flag "-coverage-function-names-in-data" is actually backwards -- we do
Nick Lewycky [Wed, 20 Mar 2013 02:14:38 +0000 (02:14 +0000)]
The flag "-coverage-function-names-in-data" is actually backwards -- we do
emit function names in .gcda files by default, and the flag turns that off!
Rename the flag to make it match what it actually does. This keeps the default
format compatible with gcc 4.2.

Also add a test for this flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177475 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't look outside the innermost enclosing namespace when
John McCall [Wed, 20 Mar 2013 01:53:00 +0000 (01:53 +0000)]
Don't look outside the innermost enclosing namespace when
performing unqualified lookup for a friend class declaration.

rdar://13393749

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177473 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-cxxabi] Fix assertion on unhandled function template arg types
Reid Kleckner [Wed, 20 Mar 2013 01:40:23 +0000 (01:40 +0000)]
[ms-cxxabi] Fix assertion on unhandled function template arg types

This code was changed in r158376 to get template argument source info
for better diagnostics, but the current code asserts for any kind of
unsupported template argument before it can issue a diagnostic.  This change
goes back to the Itanium implementation of isTemplate() and puts the argument
index into the diagnostic instead of a source location.

Review URL: http://llvm-reviews.chandlerc.com/D553

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177471 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake clang emit linkage names in debug info for subprograms when coverage info
Nick Lewycky [Wed, 20 Mar 2013 01:38:16 +0000 (01:38 +0000)]
Make clang emit linkage names in debug info for subprograms when coverage info
is enabled. Also add a new -test-coverage cc1 flag which makes testing coverage
possible and add our first clang-side coverage test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177470 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Re-apply "Do part of the work to find shortest bug paths up front".
Jordan Rose [Wed, 20 Mar 2013 00:35:37 +0000 (00:35 +0000)]
[analyzer] Re-apply "Do part of the work to find shortest bug paths up front".

With the assurance that the trimmed graph does not contain cycles,
this patch is safe (with a few tweaks), and provides the performance
boost it was intended to.

Part of performance work for <rdar://problem/13433687>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177469 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Break cycles (optionally) when trimming an ExplodedGraph.
Jordan Rose [Wed, 20 Mar 2013 00:35:31 +0000 (00:35 +0000)]
[analyzer] Break cycles (optionally) when trimming an ExplodedGraph.

Having a trimmed graph with no cycles (a DAG) is much more convenient for
trying to find shortest paths, which is exactly what BugReporter needs to do.

Part of the performance work for <rdar://problem/13433687>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177468 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/10796651> Introduce configuration macros into module maps.
Douglas Gregor [Wed, 20 Mar 2013 00:22:05 +0000 (00:22 +0000)]
<rdar://problem/10796651> Introduce configuration macros into module maps.

Configuration macros are macros that are intended to alter how a
module works, such that we need to build different module variants
for different values of these macros. A module can declare its
configuration macros, in which case we will complain if the definition
of a configation macro on the command line (or lack thereof) differs
from the current preprocessor state at the point where the module is
imported. This should eliminate some surprises when enabling modules,
because "#define CONFIG_MACRO ..." followed by "#include
<module/header.h>" would silently ignore the CONFIG_MACRO setting. At
least it will no longer be silent about it.

Configuration macros are eventually intended to help reduce the number
of module variants that need to be built. When the list of
configuration macros for a module is exhaustive, we only need to
consider the settings for those macros when building/finding the
module, which can help isolate modules for various project-specific -D
flags that should never affect how modules are build (but currently do).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177466 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSimplify/generalize some debug info test cases
David Blaikie [Tue, 19 Mar 2013 23:10:14 +0000 (23:10 +0000)]
Simplify/generalize some debug info test cases

Mostly, try to depend on the annotation comments more so these tests are more
legible, brief, and agnostic to schema changes in the future (sure, they're not
agnostic to changes to the comment annotations but since they're easier to read
they should be easier to update if that happens).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177457 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Add an integer version of the Circle tests in uninit-vals.m.
Jordan Rose [Tue, 19 Mar 2013 23:01:57 +0000 (23:01 +0000)]
[analyzer] Add an integer version of the Circle tests in uninit-vals.m.

A floating-point version is nice for testing unknown values, but it's
good to be able to check all parts of the structure as well.

Test change only, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177455 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Do not believe lazy binding when symbolic region types do not match
Anna Zaks [Tue, 19 Mar 2013 22:38:09 +0000 (22:38 +0000)]
[analyzer] Do not believe lazy binding when symbolic region types do not match

This fixes a crash when analyzing LLVM that was exposed by r177220 (modeling of
trivial copy/move assignment operators).

When we look up a lazy binding for “Builder”, we see the direct binding of Loc at offset 0.
Previously, we believed the binding, which led to a crash. Now, we do not believe it as
the types do not match.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177453 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Add a test case for diagnostic suppression on a graph with cycles.
Jordan Rose [Tue, 19 Mar 2013 22:10:44 +0000 (22:10 +0000)]
[analyzer] Add a test case for diagnostic suppression on a graph with cycles.

(see previous commit)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177449 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert "[analyzer] Do part of the work to find shortest bug paths up front."
Jordan Rose [Tue, 19 Mar 2013 22:10:35 +0000 (22:10 +0000)]
Revert "[analyzer] Do part of the work to find shortest bug paths up front."

The whole reason we were doing a BFS in the first place is because an
ExplodedGraph can have cycles. Unfortunately, my removeErrorNode "update"
doesn't work at all if there are cycles.

I'd still like to be able to avoid doing the BFS every time, but I'll come
back to it later.

This reverts r177353 / 481fa5071c203bc8ba4f88d929780f8d0f8837ba.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177448 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTest case for r177439 and r177440.
Chad Rosier [Tue, 19 Mar 2013 21:12:57 +0000 (21:12 +0000)]
Test case for r177439 and r177440.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177441 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoObjective-C [qoi]: Provide improved parse diagnostics when
Fariborz Jahanian [Tue, 19 Mar 2013 20:27:40 +0000 (20:27 +0000)]
Objective-C [qoi]: Provide improved parse diagnostics when
closing rbrace is missing in an ObjC class declaration.
Can do beter than this, but it involves addition of
overhead which will be present in correct code.
// rdar://6854840

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177435 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix indentation for case: // comment.
Daniel Jasper [Tue, 19 Mar 2013 18:33:58 +0000 (18:33 +0000)]
Fix indentation for case: // comment.

Before:
switch (x) {
case 1:
    // Do amazing stuff
    {
  g();
  f();
}
}

After:
switch (x) {
case 1:
  // Do amazing stuff
  {
    g();
    f();
  }
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177420 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRelax test to allow for attributes on other architectures. Caught by powerpc64-unknow...
Adrian Prantl [Tue, 19 Mar 2013 18:20:35 +0000 (18:20 +0000)]
Relax test to allow for attributes on other architectures. Caught by powerpc64-unknown-linux-gnu buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177419 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSplit long lines in multi-line comments.
Alexander Kornienko [Tue, 19 Mar 2013 17:41:36 +0000 (17:41 +0000)]
Split long lines in multi-line comments.

Summary: This is implementation for /* */ comments only.

Reviewers: djasper, klimek

Reviewed By: djasper

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D547

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177415 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate test for r177413.
Chad Rosier [Tue, 19 Mar 2013 17:32:36 +0000 (17:32 +0000)]
Update test for r177413.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177414 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agocindex.py: Handle NULL pointers when parsing translation units
Tobias Grosser [Tue, 19 Mar 2013 15:30:48 +0000 (15:30 +0000)]
cindex.py: Handle NULL pointers when parsing translation units

The code inside cindex.py was comparing NULL pointer returned by
clang_parseTranslationUnit and clang_createTranslationUnit with None.
However, as illustrated by the two tests I've added, those conditions
were ineffective which resulted in assert triggering later on.

Instead, a pointer is now treated as a boolean value, a NULL pointer being
False.

Contributed-by: Xavier Deguillard <deguilx@gmail.com>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177408 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't try to set attributes in alias, they have none.
Rafael Espindola [Tue, 19 Mar 2013 15:03:47 +0000 (15:03 +0000)]
Don't try to set attributes in alias, they have none.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177402 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert r177329.
Rafael Espindola [Tue, 19 Mar 2013 14:32:23 +0000 (14:32 +0000)]
Revert r177329.

If this should not happen, we should have an assert.
If it should happen, we should have a test and remove the comment.

In no case should we have this self inconsistent code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177399 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoGo back to using the integrated assembler on windows ever when passed
Rafael Espindola [Tue, 19 Mar 2013 14:23:00 +0000 (14:23 +0000)]
Go back to using the integrated assembler on windows ever when passed
-no-integrated-as. It is the only assembler we have there.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177398 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ASan] Make -fsanitize=address always imply -fsanitize=init-order
Alexey Samsonov [Tue, 19 Mar 2013 10:48:37 +0000 (10:48 +0000)]
[ASan] Make -fsanitize=address always imply -fsanitize=init-order

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177391 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd a clarifying note when a return statement is rejected because
John McCall [Tue, 19 Mar 2013 07:04:25 +0000 (07:04 +0000)]
Add a clarifying note when a return statement is rejected because
we expect a related result type.

rdar://12493140

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177378 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove stray semicolon
Douglas Gregor [Tue, 19 Mar 2013 00:41:04 +0000 (00:41 +0000)]
Remove stray semicolon

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177370 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMinor optimization to r177367 to treat a module with missing dependencies as out...
Douglas Gregor [Tue, 19 Mar 2013 00:38:50 +0000 (00:38 +0000)]
Minor optimization to r177367 to treat a module with missing dependencies as out-of-date rather than missing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177369 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFinish refactoring the tool selection logic.
Rafael Espindola [Tue, 19 Mar 2013 00:36:57 +0000 (00:36 +0000)]
Finish refactoring the tool selection logic.

The general pattern now is that Foobar::constructTool only creates tools
defined in the tools::foobar namespace and then delegates to the parent.

The remaining duplicated code is now in the tools themselves.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177368 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13363214> Eliminate race condition between module rebuild and the...
Douglas Gregor [Tue, 19 Mar 2013 00:28:20 +0000 (00:28 +0000)]
<rdar://problem/13363214> Eliminate race condition between module rebuild and the global module index.

The global module index was querying the file manager for each of the
module files it knows about at load time, to prune out any out-of-date
information. The file manager would then cache the results of the
stat() falls used to find that module file.

Later, the same translation unit could end up trying to import one of the
module files that had previously been ignored by the module cache, but
after some other Clang instance rebuilt the module file to bring it
up-to-date. The stale stat() results in the file manager would
trigger a second rebuild of the already-up-to-date module, causing
failures down the line.

The global module index now lazily resolves its module file references
to actual AST reader module files only after the module file has been
loaded, eliminating the stat-caching race. Moreover, the AST reader
can communicate to its caller that a module file is missing (rather
than simply being out-of-date), allowing us to simplify the
module-loading logic and allowing the compiler to recover if a
dependent module file ends up getting deleted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177367 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoPR15383: When -fsanitize=float-cast-overflow checks a float-to-int conversion,
Richard Smith [Tue, 19 Mar 2013 00:01:12 +0000 (00:01 +0000)]
PR15383: When -fsanitize=float-cast-overflow checks a float-to-int conversion,
it wasn't taking into account that the float should be truncated *before* the
range check happens. Thus (unsigned)-0.99 and (unsigned char)255.9 have defined
behavior and should not be trapped.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177362 91177308-0d34-0410-b5e6-96231b3b80d8