Commit Graph

184 Commits

Author SHA1 Message Date
Stephen Kelly 919ae42e8b Update the docs for using LLVM toolset in Visual Studio
Reviewers: hans

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D51079

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@340376 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-22 01:11:18 +00:00
Hans Wennborg 221aec6633 UserManual: Update with the latest clang-cl flags
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338528 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-01 12:58:57 +00:00
Alexey Bataev 149f92fc41 [OPENMP] Modify the info about OpenMP support in UsersManual, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338252 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-30 14:44:29 +00:00
Peter Collingbourne 641d6452c9 Re-land r337333, "Teach Clang to emit address-significance tables.",
which was reverted in r337336.

The problem that required a revert was fixed in r337338.

Also added a missing "REQUIRES: x86-registered-target" to one of
the tests.

Original commit message:
> Teach Clang to emit address-significance tables.
>
> By default, we emit an address-significance table on all ELF
> targets when the integrated assembler is enabled. The emission of an
> address-significance table can be controlled with the -faddrsig and
> -fno-addrsig flags.
>
> Differential Revision: https://reviews.llvm.org/D48155

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337339 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-18 00:27:07 +00:00
Peter Collingbourne 6a156a84ae Revert r337333, "Teach Clang to emit address-significance tables."
Causing multiple failures on sanitizer bots due to TLS symbol errors,
e.g.

/usr/bin/ld: __msan_origin_tls: TLS definition in /home/buildbots/ppc64be-clang-test/clang-ppc64be/stage1/lib/clang/7.0.0/lib/linux/libclang_rt.msan-powerpc64.a(msan.cc.o) section .tbss.__msan_origin_tls mismatches non-TLS reference in /tmp/lit_tmp_0a71tA/mallinfo-3ca75e.o

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337336 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-17 23:56:30 +00:00
Peter Collingbourne af6ecdb85b Teach Clang to emit address-significance tables.
By default, we emit an address-significance table on all ELF
targets when the integrated assembler is enabled. The emission of an
address-significance table can be controlled with the -faddrsig and
-fno-addrsig flags.

Differential Revision: https://reviews.llvm.org/D48155

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337333 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-17 23:17:16 +00:00
Richard Smith 7e865695ef [docs] List correct default for -ftemplate-depth; also add missing
documentation for -fconstexpr-steps.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@336747 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-11 00:34:54 +00:00
Piotr Padlewski 1452597f76 Add -fforce-emit-vtables
Summary:
 In many cases we can't devirtualize
 because definition of vtable is not present. Most of the
 time it is caused by inline virtual function not beeing
 emitted. Forcing emitting of vtable adds a reference of these
 inline virtual functions.
 Note that GCC was always doing it.

Reviewers: rjmccall, rsmith, amharc, kuhar

Subscribers: llvm-commits, cfe-commits

Differential Revision: https://reviews.llvm.org/D47108

Co-authored-by: Krzysztof Pszeniczny <krzysztof.pszeniczny@gmail.com>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@334600 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-13 13:55:42 +00:00
Joel Galenson c1005ff749 [docs] Fix typos in the Clang User's Manual.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331644 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-07 16:23:46 +00:00
Sanjay Patel f5ef70f4cd [Driver, CodeGen] rename options to disable an FP cast optimization
As suggested in the post-commit thread for rL331056, we should match these 
clang options with the established vocabulary of the corresponding sanitizer
option. Also, the use of 'strict' is well-known for these kinds of knobs, 
and we can improve the descriptive text in the docs.

So this intends to match the logic of D46135 but only change the words.
Matching LLVM commit to match this spelling of the attribute to follow shortly.

Differential Revision: https://reviews.llvm.org/D46236


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331209 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-30 18:19:03 +00:00
Sanjay Patel 9aa61e9ad1 [Driver, CodeGen] add options to enable/disable an FP cast optimization
As discussed in the post-commit thread for:
rL330437 ( http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20180423/545906.html )

We need a way to opt-out of a float-to-int-to-float cast optimization because too much 
existing code relies on the platform-specific undefined result of those casts when the 
float-to-int overflows.

The LLVM changes associated with adding this function attribute are here:
rL330947
rL330950
rL330951

Also as suggested, I changed the LLVM doc to mention the specific sanitizer flag that 
catches this problem:
rL330958

Differential Revision: https://reviews.llvm.org/D46135


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331041 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-27 14:22:48 +00:00
Hans Wennborg 50eab4d40b UsersManual.rst: update text for /GX- to match r328708
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@329052 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-03 09:28:21 +00:00
Tony Tye b62adeec77 [AMDGPU] Remove use of OpenCL triple environment and replace with function attribute for AMDGPU (CLANG)
- Remove use of the opencl and amdopencl environment member of the target triple for the AMDGPU target.
- Use a function attribute to communicate to the AMDGPU backend.

Differential Revision: https://reviews.llvm.org/D43735


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328347 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-23 18:43:15 +00:00
Aaron Ballman 1ba6078cca Update the supported C language standards in the user manual.
Remove mention of -std=c94 (it is spelled iso9899:1994, not c94) and add mention of -std=c17 and -std=gnu17.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@327264 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-12 13:09:13 +00:00
Hans Wennborg e9c5141c8f UsersManual: improve the clang-cl text some more
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326438 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-01 14:48:19 +00:00
Hans Wennborg 181ea762ad UsersManual: beef up the clang-cl text a little
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326434 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-01 14:00:19 +00:00
Eric Fiselier 3548c6c4fa [Driver] Add option to manually control discarding value names in LLVM IR.
Summary:
Currently, assertion-disabled Clang builds emit value names when generating LLVM IR. This is controlled by the `NDEBUG` macro, and is not easily overridable. In order to get IR output containing names from a release build of Clang, the user must manually construct the CC1 invocation w/o the `-discard-value-names` option. This is less than ideal.

For example, Godbolt uses a release build of Clang, and so when asked to emit LLVM IR the result lacks names, making it harder to read. Manually invoking CC1 on Compiler Explorer is not feasible.

This patch adds the driver options `-fdiscard-value-names` and `-fno-discard-value-names` which allow the user to override the default behavior. If neither is specified, the old behavior remains.

Reviewers: erichkeane, aaron.ballman, lebedev.ri

Reviewed By: aaron.ballman

Subscribers: bogner, cfe-commits

Differential Revision: https://reviews.llvm.org/D42887

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@324498 91177308-0d34-0410-b5e6-96231b3b80d8
2018-02-07 18:36:51 +00:00
Eric Christopher 15c4170060 Clarify that optimization levels -O2 and above are recommended for use of PGO.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@323902 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-31 19:52:58 +00:00
Brian Gesiak 8014b6d5d0 [docs] Use monospace for PCH option flags
Summary:
Use monospace for option flags in the PCH section, instead of the
italics that were being used previously.

I believe these used to be links, for which single backticks would
have been appropriate, but since they were un-link-ified in
https://reviews.llvm.org/rL275560, I believe monospace is now more
appropriate, and so two backticks are needed.

Test Plan:
Build the `docs-clang-html` target and confirm the options are rendered
using monospace font.

Reviewers: sepavloff, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D42005

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322447 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-13 18:34:07 +00:00
Hans Wennborg 45e96fa3ef UserManual: Update with the latest clang-cl flags
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321705 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-03 13:20:25 +00:00
Serge Pavlov 39c04dc5ca Fixed markup formatting
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321623 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-01 15:53:16 +00:00
Serge Pavlov 5f7f2c06ee Enable configuration files in clang
Clang is inherently a cross compiler and can generate code for any target
enabled during build. It however requires to specify many parameters in the
invocation, which could be hardcoded during configuration process in the
case of single-target compiler. The purpose of configuration files is to
make specifying clang arguments easier.

A configuration file is a collection of driver options, which are inserted
into command line before other options specified in the clang invocation.
It groups related options together and allows specifying them in simpler,
more flexible and less error prone way than just listing the options
somewhere in build scripts. Configuration file may be thought as a "macro"
that names an option set and is expanded when the driver is called.

Use of configuration files is described in `UserManual.rst`.

Differential Revision: https://reviews.llvm.org/D24933


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321621 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-01 13:27:01 +00:00
Serge Pavlov 509607e426 Reverted 321587: Enable configuration files in clang
Need to check targets in tests more carefully.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321588 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-30 18:38:44 +00:00
Serge Pavlov 67245e0d36 Enable configuration files in clang
Clang is inherently a cross compiler and can generate code for any target
enabled during build. It however requires to specify many parameters in the
invocation, which could be hardcoded during configuration process in the
case of single-target compiler. The purpose of configuration files is to
make specifying clang arguments easier.

A configuration file is a collection of driver options, which are inserted
into command line before other options specified in the clang invocation.
It groups related options together and allows specifying them in simpler,
more flexible and less error prone way than just listing the options
somewhere in build scripts. Configuration file may be thought as a "macro"
that names an option set and is expanded when the driver is called.

Use of configuration files is described in `UserManual.rst`.

Differential Revision: https://reviews.llvm.org/D24933


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321587 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-30 17:59:26 +00:00
Alexey Bataev ca674819d0 [docs] Added description of `-f[no]-openmp-simd` option to UsersManual.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321562 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-29 18:27:00 +00:00
Vlad Tsyrklevich 746fd88cc6 [CFI] Add CFI-icall pointer type generalization
Summary:
This change allows generalizing pointers in type signatures used for
cfi-icall by enabling the -fsanitize-cfi-icall-generalize-pointers flag.
This works by 1) emitting an additional generalized type signature
metadata node for functions and 2) llvm.type.test()ing for the
generalized type for translation units with the flag specified.

This flag is incompatible with -fsanitize-cfi-cross-dso because it would
require emitting twice as many type hashes which would increase artifact
size.

Reviewers: pcc, eugenis

Reviewed By: pcc

Subscribers: kcc

Differential Revision: https://reviews.llvm.org/D39358

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317044 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-31 22:39:44 +00:00
Reka Kovacs c2f06e5f1a [docs] Fix typos in Clang's User's Manual.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314061 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-23 12:13:32 +00:00
Sylvestre Ledru 7706fc930a Fix two typos in the doc. Patch by kamleshbhalui on github
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@311854 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-27 17:34:06 +00:00
Hans Wennborg 29ed0a05e2 Update clang-cl options in the users manual
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@308427 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 09:52:24 +00:00
Brian Gesiak 29e21c348d Add docs for -foptimization-record-file=
Summary: The Clang option was previously not included in the User's Manual.

Reviewers: anemet, davidxl, hfinkel

Reviewed By: hfinkel

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D34928

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@307193 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-05 19:55:51 +00:00
Brian Gesiak 6ac9c51ede Un-revert "[Driver] Add -fdiagnostics-hotness-threshold"
Summary:
Un-revert https://reviews.llvm.org/D34868, but with a slight tweak to the
documentation to fix an error -- I had used the wrong syntax for a link.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306948 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-01 05:45:26 +00:00
Brian Gesiak 315a27e4b8 Revert "[Driver] Add -fdiagnostics-hotness-threshold"
Summary:
The commit caused a documentation breakage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306946 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-01 04:54:53 +00:00
Brian Gesiak 65139b8e3f [Driver] Add -fdiagnostics-hotness-threshold
Summary:
Depends on https://reviews.llvm.org/D34867.

Add a Clang frontend option to enable optimization remark hotness
thresholds, which were added to LLVM in https://reviews.llvm.org/D34867.
This prevents diagnostics that do not meet a minimum hotness
threshold from being output. When generating optimization remarks for large
codebases with a ton of cold code paths, this option can be used
to limit the optimization remark output at a reasonable size.
Discussion of this change can be read here:
http://lists.llvm.org/pipermail/llvm-dev/2017-June/114377.html

Reviewers: anemet, davidxl, hfinkel

Reviewed By: anemet

Subscribers: fhahn, cfe-commits

Differential Revision: https://reviews.llvm.org/D34868

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306945 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-01 04:44:38 +00:00
Bruno Cardoso Lopes f2ee5f1a8e [Driver] Add compiler option to generate a reproducer
One way to currently test the reproducers is to setup
"FORCE_CLANG_DIAGNOSTICS_CRASH=1" before invoking clang. This simulates
a crash and produces the same contents needed by the reproducers.  The
reproducers are specially useful when triaging Modules issues, not only
on crashes, but also for reproducing misleading warnings, errors, etc.

Add a '-gen-reproducer' driver option to clang (or any similar name) and
give users a flag option.

Note that clang already has a -fno-crash-diagnostics, which disables the
crash reproducers. I've decided not to propose "-fcrash-diagnostics"
since it doesn't convey the ideia of reproduction despite a crash.

rdar://problem/24114619

Differential Revision: https://reviews.llvm.org/D27604

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300109 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-12 21:46:20 +00:00
Ismail Donmez 2af0409eec Update Bugzilla URLs in docs
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@295433 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 08:26:54 +00:00
Anastasia Stulova 6b7f22d946 [OpenCL][Doc] Added OpenCL vendor extension description to user manual doc
Added description of a new feature that allows to specify
vendor extension in flexible way using compiler pragma instead
of modifying source code directly (committed in clang@r289979).

Review: D29829



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@295313 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-16 12:49:29 +00:00
Amjad Aboud 05157f019a [DebugInfo] Added support to Clang FE for generating debug info for preprocessor macros.
Added "-fdebug-macro" flag (and "-fno-debug-macro" flag) to enable (and to disable) emitting macro debug info.
Added CC1 "-debug-info-macro" flag that enables emitting macro debug info.

Differential Revision: https://reviews.llvm.org/D16135

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@294637 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-09 22:07:24 +00:00
Asiri Rathnayake 49ab8e4b60 Improve docs: Add missing #pragma push directive.
NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293877 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-02 10:35:18 +00:00
Hans Wennborg a79b64b30a UsersManual.rst: add missing newline
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292265 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-17 21:31:57 +00:00
Aaron Ballman 59a3b2aad4 Replace non-ASCII ellipsis with "..." to silence Sphinx warnings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292115 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-16 13:42:21 +00:00
Piotr Padlewski fae0c15ab2 Add -fstrict-vtable-pointers to UsersManual
Summary: Add missing flag to UsersManual
It would be good to merge it to 4.0 branch.

Reviewers: hans

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D28727

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292112 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-16 13:20:08 +00:00
Sylvestre Ledru 3a67b12cd7 fix a few typo in the doc but also in the clang messages
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292015 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-14 11:41:45 +00:00
Hans Wennborg 2d285238fc UsersManual.rst: Update clang-cl options list again
This time, make ignored options, such as /utf-8, show up as well if they
have help text.

Also, since we're now exposing -fdelayed-template-parsing, add help text
to the -fno version so that shows up as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291798 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-12 19:26:54 +00:00
Hans Wennborg ae27323dfa UsersManual.rst: Update clang-cl options list
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291783 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-12 18:15:06 +00:00
Anastasia Stulova 271b0e8f7a [Docs][OpenCL] Added OpenCL feature description to Clang documentation.
Updated index and UsersManual with OpenCL description.

Review: https://reviews.llvm.org/D28080 



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291780 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-12 17:52:22 +00:00
Michael Kuperstein d3c66fe684 Bring back note about not supporting global register variables.
This was accidentally removed in r260506, even though we only support
non-allocatable global register variables. The general (allocatable) case
is explicitly not supported.

Differential Revision: https://reviews.llvm.org/D27473


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289455 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-12 19:11:39 +00:00
Richard Smith ad44c9ed7a Add documentation describing the components of a complete toolchain including Clang.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@285341 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-27 20:55:56 +00:00
Adam Nemet 8a7af2f320 Reapply r281276 with passing -emit-llvm in one of the tests
Original commit message:

Add -fdiagnostics-show-hotness

Summary:
I've recently added the ability for optimization remarks to include the
hotness of the corresponding code region.  This uses PGO and allows
filtering of the optimization remarks by relevance.  The idea was first
discussed here:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334

The general goal is to produce a YAML file with the remarks.  Then, an
external tool could dynamically filter these by hotness and perhaps by
other things.

That said it makes sense to also expose this at the more basic level
where we just include the hotness info with each optimization remark.
For example, in D22694, the clang flag was pretty useful to measure the
overhead of the additional analyses required to include hotness.
(Without the flag we don't even run the analyses.)

For the record, Hal has already expressed support for the idea of this
patch on IRC.

Differential Revision: https://reviews.llvm.org/D23284

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281293 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-13 04:32:40 +00:00
Adam Nemet 8503d6943b Revert "Add -fdiagnostics-show-hotness"
This reverts commit r281276.

Many bots are failing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281279 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-13 00:16:49 +00:00
Adam Nemet fd2a481cd9 Add -fdiagnostics-show-hotness
Summary:
I've recently added the ability for optimization remarks to include the
hotness of the corresponding code region.  This uses PGO and allows
filtering of the optimization remarks by relevance.  The idea was first
discussed here:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334

The general goal is to produce a YAML file with the remarks.  Then, an
external tool could dynamically filter these by hotness and perhaps by
other things.

That said it makes sense to also expose this at the more basic level
where we just include the hotness info with each optimization remark.
For example, in D22694, the clang flag was pretty useful to measure the
overhead of the additional analyses required to include hotness.
(Without the flag we don't even run the analyses.)

For the record, Hal has already expressed support for the idea of this
patch on IRC.

Differential Revision: https://reviews.llvm.org/D23284

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281276 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-12 23:48:16 +00:00