Commit Graph

60 Commits

Author SHA1 Message Date
Matthias Braun 95a2a7e612 Doxygen: Enable autobrief feature and update coding standards.
llvm-svn: 237417
2015-05-15 03:34:01 +00:00
Reid Kleckner 582786b6cc Add a note about permitting default member initializers
Use them in WinEHPrepare so that we can spot any toolchain bugs that
come up.

llvm-svn: 236244
2015-04-30 18:17:12 +00:00
Benjamin Kramer 6409a3c5d8 CodingStyle: Allow delegating ctors
Delegating constructors seem to work fine with all supported compilers.

llvm-svn: 231473
2015-03-06 13:46:50 +00:00
Aaron Ballman 6ab161497a Initializer lists are supported in MSVC 2013. Since that's our minimum required version, we can move that to the list of acceptable C++11 features.
llvm-svn: 231313
2015-03-04 23:17:31 +00:00
Reid Kleckner fc44ca0881 Delete LLVM_DELETED_FUNCTION from coding standards
It didn't seem worth leaving behind a guideline to use '= delete' to
make a class uncopyable. That's a well known C++ design pattern.

Reported on the mailing list and in PR22724.

llvm-svn: 230776
2015-02-27 18:34:16 +00:00
Chris Lattner 6cd04ac963 fix a typo
llvm-svn: 230510
2015-02-25 17:28:41 +00:00
Benjamin Kramer 499473c201 Document that defaulted & deleted methods and explicit conversions are allowed now.
llvm-svn: 229369
2015-02-16 10:28:41 +00:00
Benjamin Kramer bec02ccdea Remove LLVM_HAS_VARIADIC_TEMPLATES and all the faux variadic workarounds guarded by it.
We no longer support compilers without variadic template support.

llvm-svn: 229324
2015-02-15 19:34:28 +00:00
Benjamin Kramer de1a193d24 Update the docs to require at least MSVC 2013.
llvm-svn: 229323
2015-02-15 19:34:17 +00:00
Paul Robinson 343e496473 Explicitly describe '///' versus '//' comment delimiters.
llvm-svn: 226750
2015-01-22 00:19:56 +00:00
Peter Collingbourne e046199a71 Introduce Go coding standards for LLVM.
Rather than define our own standards, we adopt a set of best practices that
are already in use by the Go community.

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

llvm-svn: 219646
2014-10-14 00:40:53 +00:00
Duncan P. N. Exon Smith 38f556d96d CodingStandards: Document std::equal misbehaviour
I should have included this as part of r215986, which worked around this
corner by changing ArrayRef::equals() not to use std::equal.  Alas.

llvm-svn: 215988
2014-08-19 16:49:40 +00:00
Reid Kleckner 6a8fada294 Remove the recommendation against using std::function
Clang-cl supports MSVC-style RTTI now, and we can even compile
typeid(...) with /GR-.  Just don't instantiate std::function with a
polymorphic type, or bad things will happen.

llvm-svn: 212148
2014-07-02 00:42:07 +00:00
Richard Smith ddb2fde175 Update programmers manual to cover llvm::function_ref, and add a note to the
coding standard suggesting using it instead of the (unavailable) std::function.

llvm-svn: 208067
2014-05-06 07:45:39 +00:00
Richard Smith 788a49b747 Revert accidentally-committed files.
llvm-svn: 208034
2014-05-06 01:46:26 +00:00
Richard Smith c167d656e7 Re-commit r208025, reverted in r208030, with a fix for a conformance issue
which GCC detects and Clang does not!

llvm-svn: 208033
2014-05-06 01:44:26 +00:00
Duncan P. N. Exon Smith b6f5811a3f C++11: Compatibility with (C++03 => MSVC)
llvm-svn: 206481
2014-04-17 18:02:36 +00:00
Duncan P. N. Exon Smith 8443d58a81 C++11: Document some limitations imposed by MSVC
llvm-svn: 206480
2014-04-17 18:02:34 +00:00
Sean Silva 1703e705cf [docs] Fix up some links to the preferred style.
:doc:`...` and :ref:`...` links help Sphinx keep track the dependencies
between documents and ensure that they are not pointing to nowhere.

Raw HTML links work just fine and are easier for people less familiar
with reST/Sphinx. They are easy to change over to the :doc:/:ref: style
after the fact so this is not a problem.

This commit doesn't fix all of them.

llvm-svn: 205792
2014-04-08 21:06:22 +00:00
Duncan P. N. Exon Smith fdbb44a59e C++11: Remove const from in auto guidelines
Using const is orthogonal to guidelines on using auto& and auto*.

llvm-svn: 203257
2014-03-07 18:06:15 +00:00
Duncan P. N. Exon Smith 6b3d6a4fe9 C++11: Copy pointers with const auto *
llvm-svn: 203254
2014-03-07 17:23:29 +00:00
Reid Kleckner 38dcdb744f Avoid std::function until PR19030 is fixed
We'd like to keep the clang-cl self-host working until we implement
MSVC-compatible RTTI.

Differential Revision: http://llvm-reviews.chandlerc.com/D2930

llvm-svn: 202758
2014-03-03 21:12:13 +00:00
Peter Collingbourne 23d72e8465 Document that std::initializer_list is not always available.
Differential Revision: http://llvm-reviews.chandlerc.com/D2923

llvm-svn: 202750
2014-03-03 19:54:42 +00:00
Duncan P. N. Exon Smith 9948637687 C++11: Beware unnecessary copies with auto
It's easy to copy unintentionally when using 'auto', particularly inside
range-based for loops.  Best practise is to use 'const&' unless there's
a good reason not to.

llvm-svn: 202729
2014-03-03 16:48:47 +00:00
Duncan P. N. Exon Smith 9724e833ce Clarify struct usage guidelines
The current coding standards restrict the use of struct to PODs, but no
one has been following them.  This patch updates the standards to
clarify when structs are dangerous and describe common practice in LLVM.

llvm-svn: 202728
2014-03-03 16:48:44 +00:00
Chandler Carruth d9ff35f6ed [C++11] Suggest placing callable arguments as the last argument to
facilitate the nice formatting of lambdas passed there. Suggested by
Chris during review of my lambda additions, and something I strongly
agree with.

llvm-svn: 202622
2014-03-02 09:13:39 +00:00
Chandler Carruth e55d9bf508 [C++11] Update the coding standards to provide some important guidance
about a few constructs in C++11 that are worth starting off in
a consistent manner within the codebase.

This will be matched with a change to clang-format's LLVM style which
will switch the options to support C++11 and use these conventions.

llvm-svn: 202620
2014-03-02 08:38:35 +00:00
Sean Silva 216f1ee339 [docs] Fix some Sphinx warnings.
The docs now build cleanly. Yay!

The following warnings were fixed:

/home/sean/pg/llvm/llvm/docs/HowToReleaseLLVM.rst:364: WARNING: Enumerated list ends without a blank line; unexpected unindent.
/home/sean/pg/llvm/llvm/docs/InAlloca.rst:: WARNING: document isn't included in any toctree

/home/sean/pg/llvm/llvm/docs/CodingStandards.rst:85: WARNING: Title underline too short.

Supported C++11 Language and Library Features
-------------------------------------------
/home/sean/pg/llvm/llvm/docs/CodingStandards.rst:85: WARNING: Title underline too short.

Supported C++11 Language and Library Features
-------------------------------------------
/home/sean/pg/llvm/llvm/docs/GettingStarted.rst:185: WARNING: Explicit markup ends without a blank line; unexpected unindent.
/home/sean/pg/llvm/llvm/docs/GettingStarted.rst:565: WARNING: Explicit markup ends without a blank line; unexpected unindent.
/home/sean/pg/llvm/llvm/docs/GettingStarted.rst:567: WARNING: Block quote ends without a blank line; unexpected unindent.

llvm-svn: 202603
2014-03-02 00:21:42 +00:00
Chandler Carruth 25353acf94 [docs] Update the docs to remove my hedging about C++98 vs. C++11. =]
The switch has been thrown. While I'm still watching for any failures or
problems with this, the documentation can go ahead and move forward.

llvm-svn: 202566
2014-03-01 02:48:03 +00:00
Chandler Carruth 6e390fae4b [docs] Clarify that there isn't much to be done other than watch build
bots when using the standard library facilities. The missing pieces here
aren't always in useful discreet chunks.

Fortunately, the missing pieces are few and far between, and we can
emulate most of them in our headers as needed.

Based on feedback from Lang and Dave.

llvm-svn: 202548
2014-02-28 21:59:51 +00:00
Richard Smith a98d400fec Add more whitespace to fix more bullets.
llvm-svn: 202538
2014-02-28 21:14:25 +00:00
Richard Smith f30ed8f96c Add whitespace to try to fix bulleted list.
llvm-svn: 202537
2014-02-28 21:11:28 +00:00
Ben Langmuir 3b0a866a4c Fix some links to C++11 feature papers in the Coding Standards
llvm-svn: 202532
2014-02-28 19:37:20 +00:00
Chandler Carruth e8c97895ef [docs] Add a section to the coding standards about languages and such.
A lot of this is writing down common knowledge and things often
communicated on mailing lists and in discussions. It could live in the
Programmer's Manual alternatively, but that felt slightly less
well-fitting.

It also includes (and was motivated by) the section on the relevant
language standards for LLVM and the specific features that will be
enabled with the switch to C++11.

With this, all of the documentation for the C++11 switch is, I think, in
place. I plan to flip the switch RSN. =]

llvm-svn: 202497
2014-02-28 13:35:54 +00:00
Chandler Carruth c8ce0659f2 [docs] A slight tweak to the intro for the golden rule in the coding
standards.

It claims the document intentionally doesn't give fixed standards for
brace placement or spacing, and then the document goes on to do
precisely that in several places. Instead, try to highlight that even
these rules are simply *guidance* which may be trumped by some other
circumstance or the local conventions of code.

I'm not trying to change the thrust of this part of the document, and if
folks think this does so, I'm happy to re-wordsmith it. I just don't
want it to be so self-contradicting.

llvm-svn: 202495
2014-02-28 12:24:18 +00:00
Chandler Carruth 36dc51910a Revert my commit in r199620 that added sections about namespaces to the
coding standards, and instead fix the existing section.

Thanks to Daniel Jasper for pointing out we already had a section
devoted to this topic. Instead of adding sections, just hack on this
section some. Also fix the example in the anonymous namespace section
below it to agree with the new advice.

As a re-cap, this switches the LLVM preferred style to never indent
namespaces. Having two approaches just led to endless (and utterly
pointless) debates about what was "small enough". This wasn't helping
anyone. The no-indent rule is easy to understand and doesn't really make
anything harder to read. Moreover, with tools like clang-format it is
considerably nicer to have simple consistent rules.

llvm-svn: 199637
2014-01-20 10:15:32 +00:00
Chandler Carruth 8660df47e5 Add some wording to the coding standards to say how to indent namespaces
(and to mention namespace ending comments). This is based on a quick
discussion on the developer mailing list where there was essentially no
objections to a simple and consistent rule. This should avoid future
debates about whether or not a namespace is "big enough" to indent. It
also matches clang-format's current behavior with LLVM source code which
hasn't really seen any opposition in code reviews that I spot checked.

llvm-svn: 199620
2014-01-20 01:40:43 +00:00
Alp Toker f907b891da Correct word hyphenations
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities and contractions in nearby lines.

llvm-svn: 196471
2013-12-05 05:44:44 +00:00
Chris Lattner 4fe2746c5f Revert r189704, which removed the guidance about not duplicating doc comments.
This is under active discussion.

llvm-svn: 189730
2013-09-01 15:48:08 +00:00
Chris Lattner 28cdc3d31b Remove the suggestion to not duplicate comments in header and
implementation files.  While doc generation systems don't need this,
humans do benefit from it.  Not everyone reads all code through doxygen.

llvm-svn: 189704
2013-08-30 23:06:20 +00:00
Rafael Espindola b0b1622595 Add the common begin/end naming convention to the coding standard.
llvm-svn: 187902
2013-08-07 19:34:37 +00:00
Dmitri Gribenko a84c59c95a Coding standards: don't use ``inline`` when defining a function in a class
definition

Current practice is not to use 'inline' in:

  class Foo {
  public:
    inline void bar() {
      // ...
    }
  };

llvm-svn: 174317
2013-02-04 10:24:58 +00:00
Joel Jones 7818be446c Fix spelling
llvm-svn: 173103
2013-01-21 23:20:47 +00:00
Sean Silva 92a44897a2 docs: Fix long standing linking antipattern.
Before we learned about :doc:, we used :ref: and put a dummy link at the
top of each page. Don't do that anymore.

This fixes PR14891 as a special case.

llvm-svn: 172162
2013-01-11 02:28:08 +00:00
Chandler Carruth 494cfc0786 Simplify the coding standards for #include ordering. The ordering is now
trivially achievable with an editor. I'll likely check in a silly python
script to help with this too.

llvm-svn: 169107
2012-12-02 11:53:27 +00:00
Sean Silva 7333a848c8 docs: CodingStandards should follow the coding standards.
Some variables in code examples were not LikeThis.

llvm-svn: 168275
2012-11-17 23:25:33 +00:00
Sean Silva 0fc33ec10f docs: Add link to HowToSetUpLLVMStyleRTTI
llvm-svn: 168271
2012-11-17 21:01:44 +00:00
Jordan Rose 2962d9599e Suggest llvm_unreachable over assert(0).
llvm-svn: 166821
2012-10-26 22:08:46 +00:00
Dmitri Gribenko 9fb49d2b30 Document current Doxygen use practices in Coding Standards. Mostly it is
obvious stuff and most new code being committed conforms to that.  Some old
code does not; this might cause confusion and this is the motivation to
document the correct guidelines.

llvm-svn: 166378
2012-10-20 13:27:43 +00:00
Michael J. Spencer 99a241fa2c [Docs] Update File Headers section to cover doxygen style file level docs.
llvm-svn: 164964
2012-10-01 19:59:21 +00:00