|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 144189 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | In certain cases ASTReader would call the normal DiagnosticsEngine API to initialize
the state of diagnostic pragmas but DiagnosticsEngine would try to compare source locations
leading to crash because the main FileID was not yet initialized.
Yet another case of the ASTReader trying to use the normal APIs and inadvertently breaking
invariants. Fix this by having the ASTReader set up the internal state directly.
llvm-svn: 144153 | 
| | 
| 
| 
| | llvm-svn: 143889 | 
| | 
| 
| 
| | llvm-svn: 143775 | 
| | 
| 
| 
| 
| 
| | Ahmed Charles!
llvm-svn: 143569 | 
| | 
| 
| 
| | llvm-svn: 143415 | 
| | 
| 
| 
| 
| 
| | double, make sure to use the objc_msgSend_fp2ret function which ensures that the return value will be {0, 0} if the receiver is nil.
llvm-svn: 143350 | 
| | 
| 
| 
| | llvm-svn: 143312 | 
| | 
| 
| 
| | llvm-svn: 143305 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | AST file more lazy, so that we don't eagerly load that information for
all known identifiers each time a new AST file is loaded. The eager
reloading made some sense in the context of precompiled headers, since
very few identifiers were defined before PCH load time. With modules,
however, a huge amount of code can get parsed before we see an
@import, so laziness becomes important here.
The approach taken to make this information lazy is fairly simple:
when we load a new AST file, we mark all of the existing identifiers
as being out-of-date. Whenever we want to access information that may
come from an AST (e.g., whether the identifier has a macro definition,
or what top-level declarations have that name), we check the
out-of-date bit and, if it's set, ask the AST reader to update the
IdentifierInfo from the AST files. The update is a merge, and we now
take care to merge declarations before/after imports with declarations
from multiple imports.
The results of this optimization are fairly dramatic. On a small
application that brings in 14 non-trivial modules, this takes modules
from being > 3x slower than a "perfect" PCH file down to 30% slower
for a full rebuild. A partial rebuild (where the PCH file or modules
can be re-used) is down to 7% slower. Making the PCH file just a
little imperfect (e.g., adding two smallish modules used by a bunch of
.m files that aren't in the PCH file) tips the scales in favor of the
modules approach, with 24% faster partial rebuilds.
This is just a first step; the lazy scheme could possibly be improved
by adding versioning, so we don't search into modules we already
searched. Moreover, we'll need similar lazy schemes for all of the
other lookup data structures, such as DeclContexts.
llvm-svn: 143100 | 
| | 
| 
| 
| | llvm-svn: 142886 | 
| | 
| 
| 
| | llvm-svn: 142881 | 
| | 
| 
| 
| | llvm-svn: 142879 | 
| | 
| 
| 
| 
| 
| 
| | - Size of long double is 16 bytes for both N32 and N64.
- Size of pointers and long is 8 bytes for N64.
llvm-svn: 142705 | 
| | 
| 
| 
| 
| 
| | <rdar://problem/10245086>.
llvm-svn: 142571 | 
| | 
| 
| 
| 
| 
| 
| | Who could've thought that FreeBSD would ever reach version 10!
Patch from Dimitry Andric.
llvm-svn: 142349 | 
| | 
| 
| 
| 
| 
| 
| | public. Add a __private_macro__ directive to hide a macro, similar to
the __module_private__ declaration specifier.
llvm-svn: 142188 | 
| | 
| 
| 
| 
| 
| 
| 
| | linker can group them together for performance.
This only has an effect with fairly new binutils (2.21.51 or later). Other ELF targets probably want this as well, but on BSDs binutils is usually old so it doesn't matter.
llvm-svn: 142076 | 
| | 
| 
| 
| 
| 
| | Lack of half FP was a regression compared to llvm-gcc.
llvm-svn: 142016 | 
| | 
| 
| 
| 
| 
| | _Atomic types.
llvm-svn: 142002 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This changes clang to match GCC's behavior for __extension__, which temporarily
disables the -pedantic flag.  Warnings that are enabled without -pedantic
are not affected.  Besides the general goodness of matching GCC's precedent,
my motivation for this is that macros in the arm_neon.h header need to use
__extension__ to avoid pedantic complaints about their use of statement
expressions, yet we still want to warn about incompatible pointer arguments
for those macros.
llvm-svn: 141804 | 
| | 
| 
| 
| 
| 
| | Patch by Hal Finkel!
llvm-svn: 141772 | 
| | 
| 
| 
| 
| 
| | taking into account macro arguments.
llvm-svn: 141771 | 
| | 
| 
| 
| 
| 
| | C++98 mode. Only the first occurrence of each keyword will produce a warning.
llvm-svn: 141700 | 
| | 
| 
| 
| | llvm-svn: 141638 | 
| | 
| 
| 
| | llvm-svn: 141617 | 
| | 
| 
| 
| 
| 
| | alignment parameter "S<size>" that was introduced in r141599.
llvm-svn: 141601 | 
| | 
| 
| 
| | llvm-svn: 141390 | 
| | 
| 
| 
| 
| 
| 
| 
| | the command line options (at least according to GCC's documentation). GCC 4.2
didn't appear to actually do this, but it seems like that has been fixed in
later release, so we will follow the docs.
llvm-svn: 141119 | 
| | 
| 
| 
| 
| 
| 
| 
| | because of invalid passed parameter.
rdar://10210140
llvm-svn: 141048 | 
| | 
| 
| 
| | llvm-svn: 141008 | 
| | 
| 
| 
| 
| 
| | is done, and add a note that the new setDiagnosticGroup{...} methods only operate on the current diagnostic state.
llvm-svn: 140771 | 
| | 
| 
| 
| 
| 
| 
| 
| | be straighter line code, use the new DiagnosticMappingInfo flags, and eliminate the odd MAP_WARNING_NO_WERROR and friend mappings.
 - This fixes a host of obscure bugs with regards to how warning mapping options composed with one another, and I believe makes the code substantially easier to read and reason about.
llvm-svn: 140770 | 
| | 
| 
| 
| 
| 
| 
| 
| | "no-warning-as-error", "no-error-as-fatal", and "show-in-system-header", and update DiagnosticsEngine::setDiagnosticGroup{WarningAsError,ErrorAsFatal} and GetDefaultDiagMappingInfo to set them appropriately.
 - No actual functionality change for now, we still also use the diag::Mapping::{MAP_WARNING_NO_ERROR,MAP_ERROR_NO_FATAL,MAP_WARNING_SHOW_IN_SYSTEM_HEADER} for a little while longer.
llvm-svn: 140768 | 
| | 
| 
| 
| 
| 
| 
| | that in DiagnosticEngine instead of the convoluted calling into DiagnosticIDs
which then calls back into the DiagnosticsEngine.
llvm-svn: 140766 | 
| | 
| 
| 
| 
| 
| | - Also, spell const_iterator as const_iterator.
llvm-svn: 140765 | 
| | 
| 
| 
| 
| 
| | and eliminate setDiagnosticMappingInternal.
llvm-svn: 140763 | 
| | 
| 
| 
| 
| 
| 
| | storing mappings with that instead of straying some magic constants about the
source.
llvm-svn: 140760 | 
| | 
| 
| 
| 
| 
| | worth methodizing.
llvm-svn: 140759 | 
| | 
| 
| 
| 
| 
| | killed the sole client.
llvm-svn: 140756 | 
| | 
| 
| 
| 
| 
| 
| 
| | TextDiagnosticPrinter to use that instead of extracting the current mapping via getDiagnosticLevel, which fixes one class of corner cases w.r.t. printing the "-Werror" diagnostic option marker.
 - The TextDiagnosticPrinter code is still fragile as it is just "reverse engineering" what the diagnostic engine is doing. Not my current priority to fix though.
llvm-svn: 140752 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | DiagnosticsEngine::setDiagnosticGroup{ErrorAsFatal,WarningAsError} methods which
more accurately model the correct API -- no internal change to the diagnostics
engine yet though.
 - Also, stop honoring -Werror=everything (etc.) as a valid (but oddly behaved) option.
llvm-svn: 140747 | 
| | 
| 
| 
| 
| 
| 
| | "show-in-system-header" bits, which is part of teasing them apart from the
diagnostic mapping kind.
llvm-svn: 140742 | 
| | 
| 
| 
| | llvm-svn: 140708 | 
| | 
| 
| 
| | llvm-svn: 140693 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | predefines based on the output of GCC as well as the CPU predefines.
Invert tests for __AVX__, Clang's AVX feature is hard coded off still.
Switch Atom from 'SSE3' to 'SSSE3'. This matches GCC's behavior, Intel's
documentation, and ICC's documentation (such as I could dig up).
Switch Athlon and Geode to enable 3dnowa rather than just 3dnow and
nothing (resp.).
llvm-svn: 140692 | 
| | 
| 
| 
| 
| 
| | __tune_...__ define as well.
llvm-svn: 140690 | 
| | 
| 
| 
| 
| 
| | the target identifying macros at the top, including subtarget macros.
llvm-svn: 140689 | 
| | 
| 
| 
| 
| 
| | Add 64-bit preprocessor macro tests.
llvm-svn: 140688 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | fallthrough now that we're working with a switch. Also remove a dubious
"feature" regarding k6 processors and 3dnow and leave a fixme... Not
that anyone is likely to care about correct tuning for k6 processors
with and w/o 3dnow...
llvm-svn: 140687 |