]> granicus.if.org Git - clang/log
clang
9 years agoRemove a redundant check from CGDebugInfo::shouldOmitDefinition() (NFC).
Adrian Prantl [Fri, 11 Sep 2015 18:54:28 +0000 (18:54 +0000)]
Remove a redundant check from CGDebugInfo::shouldOmitDefinition() (NFC).

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

9 years agoCleanup: Get rid of a bunch of unnecessary invocations of internString()
Adrian Prantl [Fri, 11 Sep 2015 18:45:02 +0000 (18:45 +0000)]
Cleanup: Get rid of a bunch of unnecessary invocations of internString()
in CGDebugInfo.cpp: MDString::get() copies its arguments.

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

9 years ago[Static Analyzer] Fixed a typo in a diagnostic message.
Gabor Horvath [Fri, 11 Sep 2015 18:41:50 +0000 (18:41 +0000)]
[Static Analyzer] Fixed a typo in a diagnostic message.

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

9 years agoExtend the Token visualizer used by MSVC to display the identifier text for tok:...
Aaron Ballman [Fri, 11 Sep 2015 18:35:18 +0000 (18:35 +0000)]
Extend the Token visualizer used by MSVC to display the identifier text for tok::identifier tokens.

Patch by Mike Spertus.

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

9 years agoUse Itanium C++ ABI triple for new modules+debug test
Reid Kleckner [Fri, 11 Sep 2015 17:50:14 +0000 (17:50 +0000)]
Use Itanium C++ ABI triple for new modules+debug test

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

9 years ago[test] Specify exception object type in two tests
Vedant Kumar [Fri, 11 Sep 2015 17:39:34 +0000 (17:39 +0000)]
[test] Specify exception object type in two tests

Replace:
    'try { throw 0; } catch (...)'
with
    'try { throw 0; } catch (int e)'

in two test cases.

Differential Revision: http://reviews.llvm.org/D12743

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

9 years ago[CMake] Making the bootstrap-clear target always delete the boostrap build directories.
Chris Bieneman [Fri, 11 Sep 2015 17:38:38 +0000 (17:38 +0000)]
[CMake] Making the bootstrap-clear target always delete the boostrap build directories.

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

9 years agoUpdate test expectations for LLVM asm printing change
Reid Kleckner [Fri, 11 Sep 2015 17:27:53 +0000 (17:27 +0000)]
Update test expectations for LLVM asm printing change

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

9 years agoModule Debugging: Emit forward declarations for types that are defined in
Adrian Prantl [Fri, 11 Sep 2015 17:23:08 +0000 (17:23 +0000)]
Module Debugging: Emit forward declarations for types that are defined in
clang modules, if -dwarf-ext-refs (DebugTypesExtRefs) is specified.

This reimplements r247369 in about a third of the amount of code.
Thanks to David Blaikie pointing this out in post-commit review!

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

9 years agoRevert "Module Debugging: Emit forward declarations for types that are defined in"
Adrian Prantl [Fri, 11 Sep 2015 17:23:03 +0000 (17:23 +0000)]
Revert "Module Debugging: Emit forward declarations for types that are defined in"

This reverts commit r247369 to facilitate reviewing of the following patch.

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

9 years ago[Static Analyzer] Properly clean up the dynamic type information for dead regions.
Gabor Horvath [Fri, 11 Sep 2015 17:19:57 +0000 (17:19 +0000)]
[Static Analyzer] Properly clean up the dynamic type information for dead regions.

Differential Revision: http://reviews.llvm.org/D12767

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

9 years ago[Static Analyzer] Lambda support.
Gabor Horvath [Fri, 11 Sep 2015 16:55:01 +0000 (16:55 +0000)]
[Static Analyzer] Lambda support.

Differential Revision: http://reviews.llvm.org/D12652

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

9 years ago[SEH] Port __try / __leave test to new IR
Reid Kleckner [Fri, 11 Sep 2015 16:29:27 +0000 (16:29 +0000)]
[SEH] Port __try / __leave test to new IR

It turns out that the IR we already generate for __leave is fine, so no
code changes were needed.

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

9 years ago[Static Analyzer] Minor cleanups for the nullability checker.
Gabor Horvath [Fri, 11 Sep 2015 16:29:05 +0000 (16:29 +0000)]
[Static Analyzer] Minor cleanups for the nullability checker.

Differential Revision: http://reviews.llvm.org/D12619

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

9 years ago[CodeGen] Teach SimplifyPersonality about the updated LandingPadInst
Vedant Kumar [Fri, 11 Sep 2015 15:40:05 +0000 (15:40 +0000)]
[CodeGen] Teach SimplifyPersonality about the updated LandingPadInst

When uses of personality functions were moved from LandingPadInst to
Function, we forgot to update SimplifyPersonality(). This patch corrects
that.

Note: SimplifyPersonality() is an optimization which replaces
personality functions with the default C++ personality when possible.
Without this update, some ObjC++ projects fail to link against C++
libraries (seeing as the exception ABI had effectively changed).

rdar://problem/22155434

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

9 years agoThis test requires UTF-8 output to print the UT-8 characters.
Yaron Keren [Fri, 11 Sep 2015 13:29:12 +0000 (13:29 +0000)]
This test requires UTF-8 output to print the UT-8 characters.

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

9 years agoFixed HasDeclarationMatcher to properly convert all types into decls where possible...
Aaron Ballman [Fri, 11 Sep 2015 11:51:24 +0000 (11:51 +0000)]
Fixed HasDeclarationMatcher to properly convert all types into decls where possible. Added objcObjectPointerType(), objcInterfaceDecl(), templateTypeParmType(), injectedClassNameType(), and unresolvedUsingTypenameDecl(). Updated documentation for pointerType() to call out that it does not match ObjCObjectPointerType types. Changed pointsTo() to handle ObjCObjectPointerType as well as PointerType.

While this may seem like a lot of unrelated changes, they all relate back to fixing HasDeclarationMatcher.

This now allows us to write a matcher like:

varDecl(hasType(namedDecl(hasName("Foo"))))

that matches code using typedefs, objc interfaces, template type parameters, injected class names, or unresolved using typenames.

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

9 years ago[OPENMP] Preserve alignment of the original variables for the captured references.
Alexey Bataev [Fri, 11 Sep 2015 10:29:41 +0000 (10:29 +0000)]
[OPENMP] Preserve alignment of the original variables for the captured references.
Patch makes codegen to preserve alignment of the shared variables captured and used in OpenMP regions.

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

9 years agoclang/test/Modules/ExtDebugInfo.cpp: Use %itanium_abi_triple.
NAKAMURA Takumi [Fri, 11 Sep 2015 08:56:12 +0000 (08:56 +0000)]
clang/test/Modules/ExtDebugInfo.cpp: Use %itanium_abi_triple.

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

9 years agoclang/test/Modules/ExtDebugInfo.cpp: Use [[@LINE]].
NAKAMURA Takumi [Fri, 11 Sep 2015 08:53:29 +0000 (08:53 +0000)]
clang/test/Modules/ExtDebugInfo.cpp: Use [[@LINE]].

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

9 years agoFix \param in r247251. [-Wdocumentation]
NAKAMURA Takumi [Fri, 11 Sep 2015 08:13:32 +0000 (08:13 +0000)]
Fix \param in r247251. [-Wdocumentation]

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

9 years ago[OPENMP] Fix printing of array section with single index.
Alexey Bataev [Fri, 11 Sep 2015 04:54:28 +0000 (04:54 +0000)]
[OPENMP] Fix printing of array section with single index.

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

9 years ago[modules] Don't load files specified by -fmodule-file= when modules are
Richard Smith [Fri, 11 Sep 2015 03:58:07 +0000 (03:58 +0000)]
[modules] Don't load files specified by -fmodule-file= when modules are
disabled. (We still allow this via -cc1 / -Xclang, primarily for testing.)

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

9 years ago[opaque pointer type] update test cases for explicit pointee types on global aliases
David Blaikie [Fri, 11 Sep 2015 03:22:18 +0000 (03:22 +0000)]
[opaque pointer type] update test cases for explicit pointee types on global aliases

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

9 years ago[modules] Slightly defang an assert that produces false-positives on the selfhost...
Richard Smith [Fri, 11 Sep 2015 02:22:03 +0000 (02:22 +0000)]
[modules] Slightly defang an assert that produces false-positives on the selfhost bot.

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

9 years agoDocs: Document __builtin_nontemporal_load and __builtin_nontemporal_store.
Michael Zolotukhin [Fri, 11 Sep 2015 02:01:15 +0000 (02:01 +0000)]
Docs: Document __builtin_nontemporal_load and __builtin_nontemporal_store.

Summary:
In r247104 I added the builtins for generating non-temporal memory operations,
but now I realized that they lack documentation. This patch adds some.

Differential Revision: http://reviews.llvm.org/D12785

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

9 years ago[sema] Fix assertion hit when using libclang to index a particular C++ snippet involv...
Argyrios Kyrtzidis [Fri, 11 Sep 2015 01:44:56 +0000 (01:44 +0000)]
[sema] Fix assertion hit when using libclang to index a particular C++ snippet involving templates.

Assertion hit was in ClassTemplateSpecializationDecl::getSourceRange().

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

9 years agoModule Debugging: Emit forward declarations for types that are defined in
Adrian Prantl [Fri, 11 Sep 2015 01:03:26 +0000 (01:03 +0000)]
Module Debugging: Emit forward declarations for types that are defined in
clang modules, if -dwarf-ext-refs (DebugTypesExtRefs) is specified.

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

9 years agoCleanup: Let CGDebugInfo::ModuleRefCache use a TrackingMDNode (NFC).
Adrian Prantl [Fri, 11 Sep 2015 01:03:19 +0000 (01:03 +0000)]
Cleanup: Let CGDebugInfo::ModuleRefCache use a TrackingMDNode (NFC).

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

9 years ago[MS ABI] Remove another call to RequireCompleteType
David Majnemer [Fri, 11 Sep 2015 00:53:15 +0000 (00:53 +0000)]
[MS ABI] Remove another call to RequireCompleteType

I cannot come up with a testcase which would rely on this call to
RequireCompleteType, I believe that it is superfluous given the current
state of clang.

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

9 years ago[Driver] Use UniversalCRT on Windows if available
Reid Kleckner [Fri, 11 Sep 2015 00:09:39 +0000 (00:09 +0000)]
[Driver] Use UniversalCRT on Windows if available

Summary:
With Visual Studio 2015 release, a part of runtime library was extracted
and now comes with Windows Kits. This patch enables clang to use
Universal CRT library if  %INCLUDE or %LIB environment varaibles are not
specified.

See also https://llvm.org/bugs/show_bug.cgi?id=24741

Patch by Igor Kudrin

Reviewers: zturner, hans, rnk

Subscribers: ruiu, cfe-commits

Differential Revision: http://reviews.llvm.org/D12695

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

9 years agoDocs: Add missing new line before a list.
Michael Zolotukhin [Thu, 10 Sep 2015 23:56:10 +0000 (23:56 +0000)]
Docs: Add missing new line before a list.

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

9 years agoHandle '-r' option properly
Reid Kleckner [Thu, 10 Sep 2015 22:31:45 +0000 (22:31 +0000)]
Handle '-r' option properly

Summary:
This fixs the bug
https://llvm.org/bugs/show_bug.cgi?id=12587

Patch by Yunlian Jiang

Reviewers: Bigcheese, rnk

Differential Revision: http://reviews.llvm.org/D10279

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

9 years agoSupport noreturn in limited contexts on Objective-C message sends.
John McCall [Thu, 10 Sep 2015 22:27:50 +0000 (22:27 +0000)]
Support noreturn in limited contexts on Objective-C message sends.

rdar://6198039

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

9 years ago[SEH] Use cleanupendpad so that WinEHPrepare gets the coloring right
Reid Kleckner [Thu, 10 Sep 2015 22:11:13 +0000 (22:11 +0000)]
[SEH] Use cleanupendpad so that WinEHPrepare gets the coloring right

Cleanupendpad is a lot like catchendpad, so we can reuse the same
EHScopeStack type.

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

9 years ago[MS ABI] Make member pointers return true for isIncompleteType
David Majnemer [Thu, 10 Sep 2015 21:52:00 +0000 (21:52 +0000)]
[MS ABI] Make member pointers return true for isIncompleteType

The type of a member pointer is incomplete if it has no inheritance
model.  This lets us reuse more general logic already embedded in clang.

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

9 years agoRevert "Generating assumption loads of vptr after ctor call (fixed)"
Piotr Padlewski [Thu, 10 Sep 2015 20:18:30 +0000 (20:18 +0000)]
Revert "Generating assumption loads of vptr after ctor call (fixed)"

It seems that there is small bug, and we can't generate assume loads
when some virtual functions have internal visibiliy
This reverts commit 982bb7d966947812d216489b3c519c9825cacbf2.

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

9 years agoMove sel-address.mm from test/CodeGenCXX to test/SemaObjCXX, it's not a codegen test.
Nico Weber [Thu, 10 Sep 2015 19:35:31 +0000 (19:35 +0000)]
Move sel-address.mm from test/CodeGenCXX to test/SemaObjCXX, it's not a codegen test.

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

9 years agoDriver: Support cfi-icall on all OSs when targeting x86/x86_64.
Peter Collingbourne [Thu, 10 Sep 2015 19:18:05 +0000 (19:18 +0000)]
Driver: Support cfi-icall on all OSs when targeting x86/x86_64.

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

9 years agoAdd a getDeclContextDescriptor() helper function to CGDebugInfo. (NFC)
Adrian Prantl [Thu, 10 Sep 2015 18:39:45 +0000 (18:39 +0000)]
Add a getDeclContextDescriptor() helper function to CGDebugInfo. (NFC)

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

9 years ago[SEH] Use catchret in the new EH IR like we do for C++
Reid Kleckner [Thu, 10 Sep 2015 18:39:41 +0000 (18:39 +0000)]
[SEH] Use catchret in the new EH IR like we do for C++

Also add tests for SEH with the new IRGen.

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

9 years ago[CUDA] Postprocess bitcode linked in during device-side CUDA compilation.
Artem Belevich [Thu, 10 Sep 2015 18:24:23 +0000 (18:24 +0000)]
[CUDA] Postprocess bitcode linked in during device-side CUDA compilation.

Link in and internalize the symbols we need from supplied bitcode library.

Differential Revision: http://reviews.llvm.org/D11664

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

9 years ago[CUDA] Allow trivial constructors as initializer for __shared__ variables.
Artem Belevich [Thu, 10 Sep 2015 17:26:58 +0000 (17:26 +0000)]
[CUDA] Allow trivial constructors as initializer for __shared__ variables.

Differential Revision: http://reviews.llvm.org/D12739

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

9 years agoDebug Info: Remove an unnecessary debug type visitor.
Adrian Prantl [Thu, 10 Sep 2015 17:13:31 +0000 (17:13 +0000)]
Debug Info: Remove an unnecessary debug type visitor.
Thanks to dblaikie for spotting this.

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

9 years agoRe-commit r247218: "Fix Clang-tidy misc-use-override warnings, other minor fixes"
Hans Wennborg [Thu, 10 Sep 2015 17:07:54 +0000 (17:07 +0000)]
Re-commit r247218: "Fix Clang-tidy misc-use-override warnings, other minor fixes"

This never broke the build; it was the LLVM side, r247216, that caused problems.

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

9 years agoProperly close documentation /code blocks with /endcode.
Aaron Ballman [Thu, 10 Sep 2015 15:13:22 +0000 (15:13 +0000)]
Properly close documentation /code blocks with /endcode.

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

9 years agoAVX-512: Changed nidx parameter in extractf64/32 intrinsic from i8 to i32 according...
Igor Breger [Thu, 10 Sep 2015 12:55:54 +0000 (12:55 +0000)]
AVX-512: Changed nidx parameter in extractf64/32 intrinsic from i8 to i32 according to the Intel Spec

Differential Revision: http://reviews.llvm.org/D12752

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

9 years ago[OPENMP] Generate threadprivates as TLS variables by default.
Alexey Bataev [Thu, 10 Sep 2015 12:06:58 +0000 (12:06 +0000)]
[OPENMP] Generate threadprivates as TLS variables by default.
If target supports TLS all threadprivates are generated as TLS. If target does not support TLS, use runtime calls for proper codegen of threadprivate variables.

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

9 years ago[OPENMP] Fix test incompatibility with Windows.
Alexey Bataev [Thu, 10 Sep 2015 11:31:04 +0000 (11:31 +0000)]
[OPENMP] Fix test incompatibility with Windows.

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

9 years ago[OPENMP] Fix test incompatibility with Windows codegen.
Alexey Bataev [Thu, 10 Sep 2015 11:09:46 +0000 (11:09 +0000)]
[OPENMP] Fix test incompatibility with Windows codegen.

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

9 years ago[OPENMP] Propagate alignment from original variables to the private copies.
Alexey Bataev [Thu, 10 Sep 2015 09:48:30 +0000 (09:48 +0000)]
[OPENMP] Propagate alignment from original variables to the private copies.
Currently private copies of captured variables have default alignment. Patch makes private variables to have same alignment as original variables.

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

9 years ago[OPENMP] Fix test incompatibility with 32-bit platforms
Alexey Bataev [Thu, 10 Sep 2015 09:06:59 +0000 (09:06 +0000)]
[OPENMP] Fix test incompatibility with 32-bit platforms

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

9 years ago[OPENMP] Outlined function for parallel and other regions with list of captured varia...
Alexey Bataev [Thu, 10 Sep 2015 08:12:02 +0000 (08:12 +0000)]
[OPENMP] Outlined function for parallel and other regions with list of captured variables.
Currently all variables used in OpenMP regions are captured into a record and passed to outlined functions in this record. It may result in some poor performance because of too complex analysis later in optimization passes. Patch makes to emit outlined functions for parallel-based regions with a list of captured variables. It reduces code for 2*n GEPs, stores and loads at least.
Codegen for task-based regions remains unchanged because runtime requires that all captured variables are passed in captured record.

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

9 years ago[MS ABI] Select a pointer to member representation more often
David Majnemer [Thu, 10 Sep 2015 07:20:05 +0000 (07:20 +0000)]
[MS ABI] Select a pointer to member representation more often

Given a reference to a pointer to member whose class's inheritance model
is unspecified, make sure we come up with an inheritance model in
plausible places.  One place we were missing involved LValue to RValue
conversion, another involved unary type traits.

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

9 years agoCFI: Introduce -fsanitize=cfi-icall flag.
Peter Collingbourne [Thu, 10 Sep 2015 02:17:40 +0000 (02:17 +0000)]
CFI: Introduce -fsanitize=cfi-icall flag.

This flag causes the compiler to emit bit set entries for functions as well
as runtime bitset checks at indirect call sites. Depends on the new function
bitset mechanism.

Differential Revision: http://reviews.llvm.org/D11857

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

9 years agoEmitRecord* API change: accepts ArrayRef instead of a SmallVector (NFC)
Mehdi Amini [Thu, 10 Sep 2015 01:46:39 +0000 (01:46 +0000)]
EmitRecord* API change: accepts ArrayRef instead of a SmallVector (NFC)

This reapply a variant commit r247179 after post-commit review from
D.Blaikie.
Hopefully I got it right this time: lifetime of initializer list ends
as with any expression, which make invalid the pattern:

ArrayRef<int> Arr = { 1, 2, 3, 4};

Just like StringRef, ArrayRef shouldn't be used to initialize local
variable but only as function argument.

From: Mehdi Amini <mehdi.amini@apple.com>

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

9 years agoDon't crash when emitting a block under returns_nonnull.
John McCall [Thu, 10 Sep 2015 00:57:46 +0000 (00:57 +0000)]
Don't crash when emitting a block under returns_nonnull.

rdar://22071955

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

9 years agoRevert r247218: "Fix Clang-tidy misc-use-override warnings, other minor fixes"
Hans Wennborg [Thu, 10 Sep 2015 00:37:18 +0000 (00:37 +0000)]
Revert r247218: "Fix Clang-tidy misc-use-override warnings, other minor fixes"

Seems it broke the Polly build.
From http://lab.llvm.org:8011/builders/perf-x86_64-penryn-O3-polly-fast/builds/11687/steps/compile/logs/stdio:

In file included from /home/grosser/buildslave/perf-x86_64-penryn-O3-polly-fast/llvm.src/lib/TableGen/Record.cpp:14:0:
/home/grosser/buildslave/perf-x86_64-penryn-O3-polly-fast/llvm.src/include/llvm/TableGen/Record.h:369:3: error: looser throw specifier for 'virtual llvm::TypedInit::~TypedInit()'
/home/grosser/buildslave/perf-x86_64-penryn-O3-polly-fast/llvm.src/include/llvm/TableGen/Record.h:270:11: error:   overriding 'virtual llvm::Init::~Init() noexcept (true)'

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

9 years agoFix Clang-tidy misc-use-override warnings, other minor fixes
Hans Wennborg [Thu, 10 Sep 2015 00:24:40 +0000 (00:24 +0000)]
Fix Clang-tidy misc-use-override warnings, other minor fixes

Patch by Eugene Zelenko!

Differential Revision: http://reviews.llvm.org/D12741

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

9 years agoARC: Fix the precise-lifetime suppression of returns_inner_pointer
John McCall [Wed, 9 Sep 2015 23:37:17 +0000 (23:37 +0000)]
ARC: Fix the precise-lifetime suppression of returns_inner_pointer
receiver extension for message sends via property syntax.

rdar://22172983

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

9 years agoFix access control for lookups using the Microsoft __super extension.
John McCall [Wed, 9 Sep 2015 23:04:17 +0000 (23:04 +0000)]
Fix access control for lookups using the Microsoft __super extension.

rdar://22464808

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

9 years agothread_local is not implemented for targeting cygwin yet.
NAKAMURA Takumi [Wed, 9 Sep 2015 22:51:31 +0000 (22:51 +0000)]
thread_local is not implemented for targeting cygwin yet.

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

9 years agoconvert builtin_unpredictable on a switch into metadata for LLVM
Sanjay Patel [Wed, 9 Sep 2015 22:39:06 +0000 (22:39 +0000)]
convert builtin_unpredictable on a switch into metadata for LLVM

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

9 years agoGenerating assumption loads of vptr after ctor call (fixed)
Piotr Padlewski [Wed, 9 Sep 2015 22:20:28 +0000 (22:20 +0000)]
Generating assumption loads of vptr after ctor call (fixed)

Generating call assume(icmp %vtable, %global_vtable) after constructor
call for devirtualization purposes.

For more info go to:
http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.html

Edit:
Fixed version because of PR24479.
After this patch got reverted because of ScalarEvolution bug (D12719)
Merged after John McCall big patch (Added Address).

http://reviews.llvm.org/D11859

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

9 years ago[Concepts] Add diagnostic; invalid specifier on function or variable concept declaration
Nathan Wilson [Wed, 9 Sep 2015 21:48:31 +0000 (21:48 +0000)]
[Concepts] Add diagnostic; invalid specifier on function or variable concept declaration

Summary: Diagnose variable and function concept declarations when an invalid specifier appears

Reviewers: rsmith, aaron.ballman, faisalv, fraggamuffin, hubert.reinterpretcast

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D12435

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

9 years ago[MS ABI] Don't crash on references to pointers to members in args
David Majnemer [Wed, 9 Sep 2015 20:57:59 +0000 (20:57 +0000)]
[MS ABI] Don't crash on references to pointers to members in args

We know that a reference can always be dereferenced.  However, we don't
always know the number of bytes if the reference's pointee type is
incomplete.  This case was correctly handled but we didn't consider the
case where the type is complete but we cannot calculate its size for ABI
specific reasons.  In this specific case, a member pointer's size is
available only under certain conditions.

This fixes PR24703.

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

9 years agoRevert "EmitRecordWith* API change: takes an ArrayRef instead of a SmallVector (NFC)"
Mehdi Amini [Wed, 9 Sep 2015 20:35:37 +0000 (20:35 +0000)]
Revert "EmitRecordWith* API change: takes an ArrayRef instead of a SmallVector (NFC)"

This reverts commit r247179.

From: Mehdi Amini <mehdi.amini@apple.com>

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

9 years agoEmitRecordWith* API change: takes an ArrayRef instead of a SmallVector (NFC)
Mehdi Amini [Wed, 9 Sep 2015 20:08:51 +0000 (20:08 +0000)]
EmitRecordWith* API change: takes an ArrayRef instead of a SmallVector (NFC)

From: Mehdi Amini <mehdi.amini@apple.com>

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

9 years ago[libclang] Add missing clang_CompileCommand_* functions in libclang.exports.
Argyrios Kyrtzidis [Wed, 9 Sep 2015 18:54:16 +0000 (18:54 +0000)]
[libclang] Add missing clang_CompileCommand_* functions in libclang.exports.

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

9 years agoFix a small bug in clang where generating some temporary files would have an extra...
Argyrios Kyrtzidis [Wed, 9 Sep 2015 16:48:47 +0000 (16:48 +0000)]
Fix a small bug in clang where generating some temporary files would have an extra period before the extension.

Patch by Cameron Esfahani!

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

9 years ago[Solaris] Use the GCC Installation detector to add the C++ include paths.
Rafael Espindola [Wed, 9 Sep 2015 13:36:00 +0000 (13:36 +0000)]
[Solaris] Use the GCC Installation detector to add the C++ include paths.

Patch by Xan López!

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

9 years ago[ARM] "cortex-r5f" and "cortex-m4f" are unknown names for clang.
Alexandros Lamprineas [Wed, 9 Sep 2015 11:29:06 +0000 (11:29 +0000)]
[ARM] "cortex-r5f" and "cortex-m4f" are unknown names for clang.
The tests in test/CodeGen/arm-target-features.c are currently
passing but warning messages are suppressed. These tests are now
synchronized with the corresponding changes in Target Parser.

This patch will fix the regressions in clang caused by r247136

Differential Revision: http://reviews.llvm.org/D12722

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

9 years agoFix vld1_lane intrinsic generation
Steven Wu [Wed, 9 Sep 2015 01:37:18 +0000 (01:37 +0000)]
Fix vld1_lane intrinsic generation

Fix a bug introduced in r246985 which causes assertion when generating
vld1_lane.

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

9 years agoCodeGen: Add CFI unrelated cast checks to the new pointer code path.
Peter Collingbourne [Wed, 9 Sep 2015 00:01:31 +0000 (00:01 +0000)]
CodeGen: Add CFI unrelated cast checks to the new pointer code path.

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

9 years agoIntroduce __builtin_nontemporal_store and __builtin_nontemporal_load.
Michael Zolotukhin [Tue, 8 Sep 2015 23:52:33 +0000 (23:52 +0000)]
Introduce __builtin_nontemporal_store and __builtin_nontemporal_load.

Summary:
Currently clang provides no general way to generate nontemporal loads/stores.
There are some architecture specific builtins for doing so (e.g. in x86), but
there is no way to generate non-temporal store on, e.g. AArch64. This patch adds
generic builtins which are expanded to a simple store with '!nontemporal'
attribute in IR.

Differential Revision: http://reviews.llvm.org/D12313

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

9 years agoRevert "[Static Analyzer] BugReporter.cpp:2869: Assertion failed: !RemainingNodes...
Devin Coughlin [Tue, 8 Sep 2015 23:50:22 +0000 (23:50 +0000)]
Revert "[Static Analyzer] BugReporter.cpp:2869: Assertion failed: !RemainingNodes.empty() && "No error node found in the trimmed graph""

This is making our internal build bot fail because it results in extra warnings being
emitted past what should be sink nodes. (There is actually an example of this in the
updated malloc.c test in the reverted commit.)

I'm working on a patch to fix the original issue by adding a new checker API to explicitly
create error nodes. This API will ensure that error nodes are always tagged in order to
prevent them from being reclaimed.

This reverts commit r246188.

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

9 years agoCodeGen: Introduce CodeGenModule::CreateMetadataIdentifierForType.
Peter Collingbourne [Tue, 8 Sep 2015 23:01:30 +0000 (23:01 +0000)]
CodeGen: Introduce CodeGenModule::CreateMetadataIdentifierForType.

This function can be used to create a metadata identifier for a specific
type. No functionality change, but this will be used by D11857 and D12026.

Differential Revision: http://reviews.llvm.org/D12038

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

9 years agoclang/test/Modules/ModuleDebugInfo.cpp: Add -triple %itanium to appease ms-targeted...
NAKAMURA Takumi [Tue, 8 Sep 2015 22:47:32 +0000 (22:47 +0000)]
clang/test/Modules/ModuleDebugInfo.cpp: Add -triple %itanium to appease ms-targeted builds.

I think DebugInfo tests may avoid MS stuff for now.

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

9 years agoRemove unneeded #include.
Adrian Prantl [Tue, 8 Sep 2015 22:06:40 +0000 (22:06 +0000)]
Remove unneeded #include.

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

9 years agoCollect SEH captures in a set instead of a vector to avoid
John McCall [Tue, 8 Sep 2015 21:15:22 +0000 (21:15 +0000)]
Collect SEH captures in a set instead of a vector to avoid
doing redundant work if a variable is used multiple times.

Fixes PR24751.

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

9 years ago[Static Analyzer] Objective-C Generics Checker improvements.
Gabor Horvath [Tue, 8 Sep 2015 21:04:14 +0000 (21:04 +0000)]
[Static Analyzer] Objective-C Generics Checker improvements.

Differential Revision: http://reviews.llvm.org/D12701

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

9 years agoModule Debugging: Emit debug type information into clang ObjC modules.
Adrian Prantl [Tue, 8 Sep 2015 20:41:52 +0000 (20:41 +0000)]
Module Debugging: Emit debug type information into clang ObjC modules.

When -fmodule-format is set to "obj", emit debug info for all types
declared in a module or referenced by a declaration into the module's
object file container.

This patch adds support for Objective-C types and methods.

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

9 years ago[modules] Write the options records to a separate subblock rather than writing
Richard Smith [Tue, 8 Sep 2015 19:40:14 +0000 (19:40 +0000)]
[modules] Write the options records to a separate subblock rather than writing
them directly to the control block. These are fairly large, and in a build with
lots of modules / chained PCH, we don't need to read most of them. No
functionality change intended.

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

9 years ago[Shave]: add a -MT option to moviCompile if there wasn't one
Douglas Katzman [Tue, 8 Sep 2015 19:29:55 +0000 (19:29 +0000)]
[Shave]: add a -MT option to moviCompile if there wasn't one

Differential Revision: http://reviews.llvm.org/D12622

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

9 years agoModule Debugging: Emit debug type information into clang modules.
Adrian Prantl [Tue, 8 Sep 2015 19:20:27 +0000 (19:20 +0000)]
Module Debugging: Emit debug type information into clang modules.

When -fmodule-format is set to "obj", emit debug info for all types
declared in a module or referenced by a declaration into the module's
object file container.

This patch adds support for C and C++ types.

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

9 years agoFailing test highlighting no poisoning if dtor undeclared.
Naomi Musgrave [Tue, 8 Sep 2015 16:38:17 +0000 (16:38 +0000)]
Failing test highlighting no poisoning if dtor undeclared.

Summary:
If class or struct has not declared a destructor,
no destructor is emitted, and members are not poisoned
after destruction. This case highlights bug in current
implementation of use-after-dtor poisoning (detailed
in https://github.com/google/sanitizers/issues/596).

Reviewers: eugenis, kcc

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D12616

Only check simplest object for existence of sanitizing callback.

Rename test.

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

9 years agoFix performance regression when running clang tools.
Manuel Klimek [Tue, 8 Sep 2015 15:14:06 +0000 (15:14 +0000)]
Fix performance regression when running clang tools.

Brings tool start time for a large synthetic test case down from (on my
machine) 4 seconds to 0.5 seconds.

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

9 years agoclang/test/CodeGen/complex-convert.c: Appease for targeting powerpc64-*.
NAKAMURA Takumi [Tue, 8 Sep 2015 14:19:13 +0000 (14:19 +0000)]
clang/test/CodeGen/complex-convert.c: Appease for targeting powerpc64-*.

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

9 years agofindDominatingStoreToReturn in CGCall.cpp didn't check if a candidate store
Jakub Kuderski [Tue, 8 Sep 2015 10:36:42 +0000 (10:36 +0000)]
findDominatingStoreToReturn in CGCall.cpp didn't check if a candidate store
instruction used the ReturnValue as pointer operand or value operand. This
led to wrong code gen - in later stages (load-store elision code) the found
store and its operand would be erased, causing ReturnValue to become a <badref>.

The patch adds a check that makes sure that ReturnValue is a pointer operand of
store instruction. Regression test is also added.

This fixes PR24386.
Differential Revision: http://reviews.llvm.org/D12400

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

9 years agoUpdate code owners for AST matchers / libtooling.
Manuel Klimek [Tue, 8 Sep 2015 10:31:09 +0000 (10:31 +0000)]
Update code owners for AST matchers / libtooling.

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

9 years agoFix documentation of numSelectorArgs.
Manuel Klimek [Tue, 8 Sep 2015 10:11:26 +0000 (10:11 +0000)]
Fix documentation of numSelectorArgs.

Currently, the documentation for numSelectorArgs includes an incorrect
example. It shows a case where an argument of 1 will match a property
getter, but a getter will be matched only when N == 0.

This diff corrects the documentation and adds a test for numSelectorArgs(0).

Patch by Dave Lee.

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

9 years agoclangCodeGen: Fix comments. [-Wdocumentation]
NAKAMURA Takumi [Tue, 8 Sep 2015 09:42:41 +0000 (09:42 +0000)]
clangCodeGen: Fix comments. [-Wdocumentation]

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

9 years agoFix clang/test/CodeGen/mips-varargs.c for -Asserts, possibly typo.
NAKAMURA Takumi [Tue, 8 Sep 2015 09:37:09 +0000 (09:37 +0000)]
Fix clang/test/CodeGen/mips-varargs.c for -Asserts, possibly typo.

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

9 years agoAnother fix to this test, this one apparently working by
John McCall [Tue, 8 Sep 2015 09:33:33 +0000 (09:33 +0000)]
Another fix to this test, this one apparently working by
coincidence on all bots.

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

9 years agoFix clang/test/CodeGenCXX/alignment.cpp for -Asserts.
NAKAMURA Takumi [Tue, 8 Sep 2015 09:31:04 +0000 (09:31 +0000)]
Fix clang/test/CodeGenCXX/alignment.cpp for -Asserts.

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

9 years agoWhen building the alloca for a local variable, set its name
John McCall [Tue, 8 Sep 2015 09:18:30 +0000 (09:18 +0000)]
When building the alloca for a local variable, set its name
separately from building the instruction so that it's
preserved even in -Asserts builds.

Employ C++'s mystical "comment" feature to discourage
breaking this in the future.

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

9 years agoRemove unnecessary braces; this resolves against a
John McCall [Tue, 8 Sep 2015 08:57:00 +0000 (08:57 +0000)]
Remove unnecessary braces; this resolves against a
single-pointer overload instead of the ArrayRef one.

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

9 years agoMove BlockByrefHelpers back to CodeGenModule.h to placate MSVC.
John McCall [Tue, 8 Sep 2015 08:21:11 +0000 (08:21 +0000)]
Move BlockByrefHelpers back to CodeGenModule.h to placate MSVC.

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

9 years agoCompute and preserve alignment more faithfully in IR-generation.
John McCall [Tue, 8 Sep 2015 08:05:57 +0000 (08:05 +0000)]
Compute and preserve alignment more faithfully in IR-generation.

Introduce an Address type to bundle a pointer value with an
alignment.  Introduce APIs on CGBuilderTy to work with Address
values.  Change core APIs on CGF/CGM to traffic in Address where
appropriate.  Require alignments to be non-zero.  Update a ton
of code to compute and propagate alignment information.

As part of this, I've promoted CGBuiltin's EmitPointerWithAlignment
helper function to CGF and made use of it in a number of places in
the expression emitter.

The end result is that we should now be significantly more correct
when performing operations on objects that are locally known to
be under-aligned.  Since alignment is not reliably tracked in the
type system, there are inherent limits to this, but at least we
are no longer confused by standard operations like derived-to-base
conversions and array-to-pointer decay.  I've also fixed a large
number of bugs where we were applying the complete-object alignment
to a pointer instead of the non-virtual alignment, although most of
these were hidden by the very conservative approach we took with
member alignment.

Also, because IRGen now reliably asserts on zero alignments, we
should no longer be subject to an absurd but frustrating recurring
bug where an incomplete type would report a zero alignment and then
we'd naively do a alignmentAtOffset on it and emit code using an
alignment equal to the largest power-of-two factor of the offset.

We should also now be emitting much more aggressive alignment
attributes in the presence of over-alignment.  In particular,
field access now uses alignmentAtOffset instead of min.

Several times in this patch, I had to change the existing
code-generation pattern in order to more effectively use
the Address APIs.  For the most part, this seems to be a strict
improvement, like doing pointer arithmetic with GEPs instead of
ptrtoint.  That said, I've tried very hard to not change semantics,
but it is likely that I've failed in a few places, for which I
apologize.

ABIArgInfo now always carries the assumed alignment of indirect and
indirect byval arguments.  In order to cut down on what was already
a dauntingly large patch, I changed the code to never set align
attributes in the IR on non-byval indirect arguments.  That is,
we still generate code which assumes that indirect arguments have
the given alignment, but we don't express this information to the
backend except where it's semantically required (i.e. on byvals).
This is likely a minor regression for those targets that did provide
this information, but it'll be trivial to add it back in a later
patch.

I partially punted on applying this work to CGBuiltin.  Please
do not add more uses of the CreateDefaultAligned{Load,Store}
APIs; they will be going away eventually.

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

9 years ago[analyzer] Apply whitespace cleanups by Honggyu Kim.
Ted Kremenek [Tue, 8 Sep 2015 03:50:52 +0000 (03:50 +0000)]
[analyzer] Apply whitespace cleanups by Honggyu Kim.

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