Commit Graph

1072 Commits

Author SHA1 Message Date
Nemanja Ivanovic c74bb5e707 Revert 266186 as it breaks anything that includes type_traits on some platforms
Since this patch provided support for the __float128 type but disabled it
on all platforms by default, some platforms can't compile type_traits with
-std=gnu++11 since there is a specialization with __float128.
This reverts the patch until D19125 is approved (i.e. we know which platforms
need this support enabled).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266460 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-15 18:04:13 +00:00
Adrian Prantl 92e0abcf10 Update to match LLVM changes for PR27284.
(Reverse the ownership between DICompileUnit and DISubprogram.)

http://reviews.llvm.org/D19034
<rdar://problem/25256815>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266445 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-15 15:55:45 +00:00
Nemanja Ivanovic b2ea6d9a87 Enable support for __float128 in Clang
This patch corresponds to review:
http://reviews.llvm.org/D15120

It adds support for the __float128 keyword, literals and a target feature to
enable it. This support is disabled by default on all targets and any target
that has support for this type is free to add it.

Based on feedback that I've received from target maintainers, this appears to
be the right thing for most targets. I have not heard from the maintainers of
X86 which I believe supports this type. I will subsequently investigate the
impact of enabling this on X86.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266186 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-13 09:49:45 +00:00
Alexey Bader 4f328fe1eb [OpenCL] Move OpenCLImageTypes.def from clangAST to clangBasic library.
Putting OpenCLImageTypes.def to clangAST library violates layering requirement: "It's not OK for a Basic/ header to include an AST/ header".
This fixes the modules build.

Differential revision: http://reviews.llvm.org/D18954
Reviewers: Richard Smith, Vassil Vassilev.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266180 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-13 08:33:41 +00:00
David Blaikie 2ff889ba1c Add a fixme for an old patch I had lying around that I'm not going to finish any time so n
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266127 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-12 21:22:48 +00:00
Adrian Prantl cc8e531a17 Use NoDebug compile units to mark debug metadata used only for sample-based
profiling and optimization remarks and indicate that no debug info shall
be emitted for these compile units.

http://reviews.llvm.org/D18808
<rdar://problem/25427165>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265862 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-08 22:43:06 +00:00
Saleem Abdulrasool fdc51a5580 revert SVN r265702, r265640
Revert the two changes to thread CodeGenOptions into the TargetInfo allocation
and to fix the layering violation by moving CodeGenOptions into Basic.
Code Generation is arguably not particularly "basic".  This addresses Richard's
post-commit review comments.  This change purely does the mechanical revert and
will be followed up with an alternate approach to thread the desired information
into TargetInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265806 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-08 16:52:00 +00:00
Alexey Bader aa8b893ccd [OpenCL] Complete image types support.
I. Current implementation of images is not conformant to spec in the following points:
  1. It makes no distinction with respect to access qualifiers and therefore allows to use images with different access type interchangeably. The following code would compile just fine:

        void write_image(write_only image2d_t img);
        kernel void foo(read_only image2d_t img) { write_image(img); } // Accepted code

     which is disallowed according to s6.13.14.

  2. It discards access qualifier on generated code, which leads to generated code for the above example:

        call void @write_image(%opencl.image2d_t* %img);

     In OpenCL2.0 however we can have different calls into write_image with read_only and wite_only images.
     Also generally following compiler steps have no easy way to take different path depending on the image access: linking to the right implementation of image types, performing IR opts and backend codegen differently.

  3. Image types are language keywords and can't be redeclared s6.1.9, which can happen currently as they are just typedef names.
  4. Default access qualifier read_only is to be added if not provided explicitly.

II. This patch corrects the above points as follows:
  1. All images are encapsulated into a separate .def file that is inserted in different points where image handling is required. This avoid a lot of code repetition as all images are handled the same way in the code with no distinction of their exact type.
  2. The Cartesian product of image types and image access qualifiers is added to the builtin types. This simplifies a lot handling of access type mismatch as no operations are allowed by default on distinct Builtin types. Also spec intended access qualifier as special type qualifier that are combined with an image type to form a distinct type (see statement above - images can't be created w/o access qualifiers).
  3. Improves testing of images in Clang.

Author: Anastasia Stulova
Reviewers: bader, mgrang.
Subscribers: pxli168, pekka.jaaskelainen, yaxunl.
Differential Revision: http://reviews.llvm.org/D17821


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265783 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-08 13:40:33 +00:00
Saleem Abdulrasool 8cca4d7cdf Basic: move CodeGenOptions from Frontend
This is a mechanical move of CodeGenOptions from libFrontend to libBasic.  This
fixes the layering violation introduced earlier by threading CodeGenOptions into
TargetInfo.  It should also fix the modules based self-hosting builds.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265702 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-07 17:49:44 +00:00
Adrian Prantl e6cf094aca Adapt to LLVM API change in r265077.
EmissionKind moved from DIBuilder to DICompileUnit.


<rdar://problem/25427165>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265078 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:57:45 +00:00
Reid Kleckner 8b87c36af7 Revert "Recommitted r263425 "Supporting all entities declared in lexical scope in LLVM debug info." After fixing PR26942 (the fix is included in this commit)."
This reverts commit r264281.

This change breaks building Chromium for iOS. We'll upload a reproducer
to the PR soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264333 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 20:38:43 +00:00
Amjad Aboud d61d80aa4b Recommitted r263425 "Supporting all entities declared in lexical scope in LLVM debug info."
After fixing PR26942 (the fix is included in this commit).

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264281 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 13:30:41 +00:00
Benjamin Kramer 6295c65c95 Revert "Recommitted r261634 "Supporting all entities declared in lexical scope in LLVM debug info." After fixing PR26715 at r263379."
This reverts commit r263425. Breaks self-host.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263436 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-14 14:58:28 +00:00
Amjad Aboud 00560a2175 Recommitted r261634 "Supporting all entities declared in lexical scope in LLVM debug info."
After fixing PR26715 at r263379.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263425 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-14 12:03:55 +00:00
Adrian Prantl 544b2b7bba Reapply r261657.
Remove an unnecessary workaround introduced in r259975. (NFC)

Now that LLVM r259973 allows replacing a temporary type with another
temporary we can rely on the original implementation.

It is possible for enums to be created as part of
their own declcontext. In this case a FwdDecl will be created
twice. This doesn't cause a problem because both FwdDecls are
entered into the ReplaceMap: finalize() will replace the first
FwdDecl with the second and then replace the second with
complete type.

Thanks to echristo for pointing this out.


# Conflicts:
#	lib/CodeGen/CGDebugInfo.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@261673 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-23 19:30:08 +00:00
Hans Wennborg 70fc525679 Revert r261634 "Supporting all entities declared in lexical scope in LLVM debug info." and r261657
r261634 and r261633 seems to have caused PR26715. r261657 depends on the former two.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@261670 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-23 19:10:16 +00:00
Adrian Prantl c473d6dc33 Remove an unnecessary workaround introduced in r259975. (NFC)
Now that LLVM r259973 allows replacing a temporary type with another
temporary we can rely on the original implementation.

It is possible for enums to be created as part of
their own declcontext. In this case a FwdDecl will be created
twice. This doesn't cause a problem because both FwdDecls are
entered into the ReplaceMap: finalize() will replace the first
FwdDecl with the second and then replace the second with
complete type.

Thanks to echristo for pointing this out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@261657 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-23 17:13:47 +00:00
Amjad Aboud 8f2107d166 Supporting all entities declared in lexical scope in LLVM debug info.
Differential Revision: http://reviews.llvm.org/D15977

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@261634 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-23 13:37:18 +00:00
Adrian Prantl edfe68550c Use llvm::TempDIScope instead of manually deleting a temporary MDNode.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260113 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-08 17:03:28 +00:00
Adrian Prantl 4404328870 Add a missing call to MDNode::deleteTemporary().
Follow-up to r259975. Kudos to the ASAN bots!

<rdar://problem/24493203>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260002 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-06 18:39:34 +00:00
Adrian Prantl 6fbed68720 Fix a crash when emitting dbeug info for forward-declared scoped enums.
It is possible for enums to be created as part of their own
declcontext. We need to cache a placeholder to avoid the type being
created twice before hitting the cache.

<rdar://problem/24493203>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259975 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-06 01:59:09 +00:00
Benjamin Kramer 1dde17c5ad Move DebugInfoKind into its own header to cut the cyclic dependency edge from Driver to Frontend.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259489 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-02 11:06:51 +00:00
Manman Ren 43af734908 Class Property: handle class properties.
At places where we handle instance properties, if necessary.

rdar://23891898


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258979 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 20:00:32 +00:00
Manman Ren 00fef86c90 Use instance_properties instead of properties. NFC.
All current properties are instance properties.

This is the second patch in a series of patches to support class properties
in addition to instance properties in objective-c.

rdar://23891898


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258824 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 18:05:23 +00:00
Adrian Prantl d97ae762ac Module debugging: Create a parent DIModule with the PCH name for types
emitted into a precompiled header to mirror the debug info emitted for
object files importing the PCH.

rdar://problem/24290667

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258555 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 21:14:41 +00:00
Adrian Prantl c87ca354aa Fix the build by using the correct suffix for 64 bit literals
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258531 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:29:41 +00:00
Adrian Prantl 9fd9596d49 Fix a typo in r258507 and change the PCH dwoid constant to ~1UL.
rdar://problem/24290667

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258519 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 18:46:45 +00:00
Adrian Prantl a892974a4f Module Debugging: Use a nonzero DWO id for precompiled headers.
PCH files don't have a module signature and LLVM uses a nonzero DWO id as
an indicator for skeleton / module CUs. This change pins the DWO id for PCH
files to a known constant value.
The correct long-term solution here is to implement a module signature
that is an actual dterministic hash (at the moment module signatures are
just random nonzero numbers) and then enable this for PCH files as well.

<rdar://problem/24290667>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258507 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 17:43:43 +00:00
Adrian Prantl 3d5d4c3965 Module Debugging: Fine-tune the condition that determines whether a type
can be found in a module.

There are externally visible anonymous types that can be found:
  typedef struct { } s; // I can be found via the typedef.
There are anonymous internal types that can be found:
  namespace { struct s {}; } // I can be found by name.

rdar://problem/24199640

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258272 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 01:29:34 +00:00
Adrian Prantl 4732653928 Module Debugging: Don't emit external type references to anonymous types.
Even if they exist in the module, they can't be matched with the forward
declaration in the object file.
<rdar://problem/24199640>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258251 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-19 23:42:53 +00:00
Rui Ueyama 9e83128d12 Update for LLVM function name change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257802 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-14 21:00:27 +00:00
Xiuli Pan 97f9428a0d [OpenCL] Pipe type support
Summary:
Support for OpenCL 2.0 pipe type.
This is a bug-fix version for bader's patch reviews.llvm.org/D14441


Reviewers: pekka.jaaskelainen, Anastasia

Subscribers: bader, Anastasia, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257254 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-09 12:53:17 +00:00
Chad Rosier 1f9949dbee Fix an unused variable warning from r256012.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256023 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-18 20:08:40 +00:00
Adrian Prantl 7973a6be38 Add a defensive check for a nullptr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256012 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-18 19:44:31 +00:00
Reid Kleckner 52750c2714 Print qualified display names when emitting CodeView
This is what debuggers expect.  Words towards fixing PR21528.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@255744 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-16 02:04:40 +00:00
Ekaterina Romanova 34a3e1fd8e Do not generate DW_TAG_imported_module for anonymous namespaces (even nested) for all the platforms except PS4.
For PS4, generate explicit import for anonymous namespaces and mark it by DW_AT_artificial attribute.

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@255281 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-10 18:52:50 +00:00
Nico Weber 9543c82dd2 Small follow-up to 254750 to get the test added there passing...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@254754 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-04 19:35:45 +00:00
Nico Weber d2a090fb5a Fix debug info for Objective-C properties from class extensions after r251874
After r251874, properties from class extensions no longer show up in
ObjCInterfaceDecl::properties().  Make debug info emission explicitly
look for properties in class extensions before looking at direct properties.

Also add a test that checks for this.  There are three interesting cases:

1. A property is only declared in a class extension, and the @implementation
   is in a different file.  This used to generated a DIObjcProperty before
   r251874 and does again with this fix.

2. A property is declared as readonly in the class itself and redeclared as
   readwrite in a class extension. clang before r251874 put the DIObjcProperty
   on the first declaration. clang after r251874 didn't emit any DIObjcProperty,
   and clang with this fix puts it on the readwrite redeclaration (which is
   what lookup finds).  This seems like a progression.

3. Like 2, but with an @implementation in the same file.  In this case,
   the property debug info gets generated a second time through the ivar
   from the definition.  In this case, lookup and declaration code need
   to agree on the line number so that the DIObjcProperty isn't emitted
   twice.  In this case, clang before r251874 emitted one DIObjcProperty
   on the first declaration, clang with r251874 emitted one on the second
   declaration, and clang with this patch still does the latter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@254750 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-04 19:14:14 +00:00
Reid Kleckner da953be488 [DebugInfo] Look through type sugar on union types when casting
Fixes PR25584.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253680 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-20 17:41:12 +00:00
Keno Fischer 344bb9bced [CGDebugInfo] Set the size and align for reference types
In r253186, I changed the DIBuilder API to now take size and align
for reference types as well. This was done in preparation for upcoming
changes to the Verifier that will validate that sizes match between
DI types and IR values that are declared as having those types.
This updates clang to actually pass the information through.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253190 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 09:04:13 +00:00
Peter Collingbourne c6358e5569 CodeGen: Update for debug info API change.
Differential Revision: http://reviews.llvm.org/D14266

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252220 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05 22:04:14 +00:00
Douglas Gregor 249d7a566d Stop back-patching 'readonly' Objective-C properties with 'readwrite' ones.
A 'readonly' Objective-C property declared in the primary class can
effectively be shadowed by a 'readwrite' property declared within an
extension of that class, so long as the types and attributes of the
two property declarations are compatible.

Previously, this functionality was implemented by back-patching the
original 'readonly' property to make it 'readwrite', destroying source
information and causing some hideously redundant, incorrect
code. Simplify the implementation to express how this should actually
be modeled: as a separate property declaration in the extension that
shadows (via the name lookup rules) the declaration in the primary
class. While here, correct some broken Fix-Its, eliminate a pile of
redundant code, clean up the ARC migrator's handling of properties
declared in extensions, and fix debug info's naming of methods that
come from categories.

A wonderous side effect of doing this write is that it eliminates the
"AddedObjCPropertyInClassExtension" method from the AST mutation
listener, which in turn eliminates the last place where we rewrite
entire declarations in a chained PCH file or a module file. This
change (which fixes rdar://problem/18475765) will allow us to
eliminate the rewritten-decls logic from the serialization library,
and fixes a crash (rdar://problem/23247794) illustrated by the
test/PCH/chain-categories.m example.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251874 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-03 01:15:46 +00:00
Benjamin Kramer aa1247dbae [CodeGen] Remove dead code. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250418 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 15:29:40 +00:00
Eric Christopher f3dafc4617 Update clang for DIBuilder::createSubroutineType API change.
Patch by Amaury Sechet!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250373 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 06:56:08 +00:00
Saleem Abdulrasool cc4221bf16 Support Debug Info path remapping
Add support for the `-fdebug-prefix-map=` option as in GCC.  The syntax is
`-fdebug-prefix-map=OLD=NEW`.  When compiling files from a path beginning with
OLD, change the debug info to indicate the path as start with NEW.  This is
particularly helpful if you are preprocessing in one path and compiling in
another (e.g. for a build cluster with distcc).

Note that the linearity of the implementation is not as terrible as it may seem.
This is normally done once per file with an expectation that the map will be
small (1-2) entries, making this roughly linear in the number of input paths.

Addresses PR24619.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250094 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 20:21:08 +00:00
Adrian Prantl 191d76ccf9 Module Debugging: Emit (ObjC) function declarations in the module scope
when building a module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249282 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-04 23:23:04 +00:00
Adrian Prantl b79caa0e7b Module debugging: Don't emit forward declarations in module scopes.
A forward declaration inside a module header does not belong to the module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249157 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 17:36:14 +00:00
Adrian Prantl b3c237670d Remove unused variable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249155 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 17:36:03 +00:00
Adrian Prantl 4ff9270301 Module debugging: Also emit Objective-C interfaces forward declarations
in their module scope when building a clang module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249031 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-01 16:57:02 +00:00
Adrian Prantl b23407aab1 Module debugging: Emit Objective-C interfaces in their module scope when
building a clang module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248974 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-01 00:48:51 +00:00