hanchenye-llvm-project/clang/test/Parser
Mark Heffernan 397a98d86d Add new llvm.loop.unroll.enable metadata for use with "#pragma unroll".
This change adds the new unroll metadata "llvm.loop.unroll.enable" which directs
the optimizer to unroll a loop fully if the trip count is known at compile time, and
unroll partially if the trip count is not known at compile time. This differs from
"llvm.loop.unroll.full" which explicitly does not unroll a loop if the trip count is not
known at compile time

With this change "#pragma unroll" generates "llvm.loop.unroll.enable" rather than
"llvm.loop.unroll.full" metadata. This changes the semantics of "#pragma unroll" slightly
to mean "unroll aggressively (fully or partially)" rather than "unroll fully or not at all".

The motivating example for this change was some internal code with a loop marked
with "#pragma unroll" which only sometimes had a compile-time trip count depending
on template magic. When the trip count was a compile-time constant, everything works
as expected and the loop is fully unrolled. However, when the trip count was not a
compile-time constant the "#pragma unroll" explicitly disabled unrolling of the loop(!).
Removing "#pragma unroll" caused the loop to be unrolled partially which was desirable
from a performance perspective.

llvm-svn: 244467
2015-08-10 17:29:39 +00:00
..
CompoundStmtScope.c
DelayedTemplateParsing.cpp If a function decl cannot be merged, mark it as invalid. 2015-01-17 02:33:17 +00:00
MicrosoftExtensions.c [MS Compat] Add support for __declspec(noalias) 2015-07-20 22:51:52 +00:00
MicrosoftExtensions.cpp Ignore the "novtable" declspec when not using the Microsoft C++ ABI. 2015-07-20 22:57:31 +00:00
MicrosoftExtensionsInlineAsm.c This test case does not require -Wno-missing-declarations or -x objective-c++. 2014-07-06 19:44:38 +00:00
PR11000.cpp Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
PR21872.cpp Parse: Don't parse after the eof has been consumed 2014-12-18 09:57:31 +00:00
access-spec-attrs.cpp Sema: attribute((annotate)) must have at least one argument 2014-12-14 01:05:01 +00:00
altivec-csk-bool.c [PPC64LE] Run some existing Altivec tests on powerpc64le as well 2014-06-13 18:30:06 +00:00
altivec.c Add builtins for the 64-bit vector integer arithmetic instructions added in POWER8. 2015-03-11 15:57:19 +00:00
annotation-token-in-lexed-body.cpp Parse: Don't assume tokens have a length 2015-03-19 00:10:23 +00:00
argument_qualified.c
argument_redef.c
argument_scope.c
arm-windows-calling-convention-handling.c Driver: add target definition for Windows on ARM 2014-04-04 20:31:19 +00:00
asm-constraints-pr7869.c
asm.c Parse: Avoid crashing on unterminated top-level asm strings 2013-12-10 21:29:48 +00:00
asm.cpp Parse: Concatenated string literals should be verified in inline asm 2014-12-11 01:00:48 +00:00
atomic.c [parser] Push _Atomic locs through DeclaratorChunk. 2015-03-29 16:42:06 +00:00
attr-availability.c Parse: Diagnose malformed 'message' arguments for 'availability' attr 2014-07-18 05:43:12 +00:00
attributes.c Uniformed parsing of GNU attributes at line beginnning and added GNU attributes parsing FIXMEs. 2014-08-16 08:29:27 +00:00
attributes.mm Revert "Don't require -re suffix on -verify directives with regexes." 2013-12-14 01:07:05 +00:00
backtrack-crash.cpp
bad-control.c Fix to PR8880 (clang dies processing a for loop) 2014-01-23 15:05:00 +00:00
block-block-storageclass.c
block-pointer-decl.c
bracket-crash.cpp
brackets.c Adjust the wording of the "brackets go after the unqualified-id" error message. It applies in cases that aren't unqualified-ids. 2015-05-01 20:47:19 +00:00
brackets.cpp Adjust the wording of the "brackets go after the unqualified-id" error message. It applies in cases that aren't unqualified-ids. 2015-05-01 20:47:19 +00:00
builtin_classify_type.c Replace "can not" with "cannot" in diagnostics messages. 2014-03-07 22:36:23 +00:00
builtin_types_compatible.c
c-namespace.c
c1x-alignas.c Switch C compilations to C11 by default. 2014-10-20 23:26:58 +00:00
c1x-generic-selection.c
c11-noreturn.c Improve diagnostics if _Noreturn is placed after a function declarator. (This sometimes happens when a macro is used that expands to either the GNU noreturn attribute or _Noreturn.) 2014-11-10 21:10:32 +00:00
captured-statements.c Parser support for #pragma clang __debug captured 2013-04-16 18:41:26 +00:00
char-literal-printing.c
check-objc2-syntax-1.m [Parser] Remove "add -fmodules" from the "use of '@import' when modules are disabled, add -fmodules" error. 2014-04-17 02:32:52 +00:00
check-syntax-1.m
check_cast.c
colon-colon-parentheses.cpp Parse: Consume tokens more carefully in CheckForLParenAfterColonColon 2014-12-17 01:39:22 +00:00
completely-empty-header-file.h
compound_literal.c Replace completely bogus ambiguous-compound-literal-in-C++ code with something 2014-05-15 02:51:15 +00:00
control-scope.c
crash-report.c Fix REQUIRES lines on tests from r228735. Thanks Kristof for pointing out the missing commas 2015-02-11 19:45:13 +00:00
cuda-kernel-call-c++11.cu Fix PR20081: Parsing templates in the presence of -x cuda -std=c++11 2014-06-20 13:09:59 +00:00
cuda-kernel-call.cu Fix PR20081: Parsing templates in the presence of -x cuda -std=c++11 2014-06-20 13:09:59 +00:00
cxx-altivec.cpp Add builtins for the 64-bit vector integer arithmetic instructions added in POWER8. 2015-03-11 15:57:19 +00:00
cxx-ambig-decl-expr-xfail.cpp Add a PR reference for XFAILed test 2014-05-28 12:26:32 +00:00
cxx-ambig-decl-expr.cpp
cxx-ambig-init-templ.cpp __declspec is not a core Clang language extension. Instead, require -fms-extensions or -fborland to enable the language extension. 2015-05-26 19:44:52 +00:00
cxx-ambig-paren-expr.cpp
cxx-attributes.cpp Parse: __attribute__((keyword)) shouldn't error 2015-01-03 19:41:00 +00:00
cxx-bool.cpp
cxx-casting.cpp PR19751: (T())++ is not a cast-expression. 2014-07-15 00:11:48 +00:00
cxx-class-template-specialization.cpp Fix for PR 16367, display the name of a function in a diagnostic instead of 2013-06-19 22:25:01 +00:00
cxx-class.cpp PR23942: a pure-specifier's integer literal must be spelled '0' 2015-06-29 23:19:23 +00:00
cxx-concept-declaration.cpp [Concepts] Add diagnostic: non template declaration 2015-07-30 21:20:55 +00:00
cxx-concepts-ambig-constraint-expr.cpp [Concepts] Parsing of requires-clause in template-declaration 2015-06-25 00:23:39 +00:00
cxx-concepts-requires-clause.cpp [Concepts] Parsing of requires-clause in template-declaration 2015-06-25 00:23:39 +00:00
cxx-condition.cpp
cxx-decl.cpp Replace "can not" with "cannot" in diagnostics messages. 2014-03-07 22:36:23 +00:00
cxx-default-args.cpp Parse: Don't crash when default argument in typedef consists of sole '=' 2015-01-13 07:42:33 +00:00
cxx-default-delete.cpp When we see something that looks like a constructor with a return type, only issue one error, not two. 2015-07-06 01:04:39 +00:00
cxx-ext-delete-default.cpp
cxx-extern-c-array.cpp
cxx-extra-semi.cpp Revert "clang/test/Driver/crash-report.c: This requires rewriter for -frewrite-includes. [PR20321]" 2014-07-16 15:12:48 +00:00
cxx-friend.cpp Sema: Implement DR317 2014-03-30 06:44:54 +00:00
cxx-in-c.c
cxx-member-crash.cpp Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
cxx-member-init-missing-paren-crash.cpp
cxx-member-initializers.cpp Parse: use the EOF token method to lex inline method bodies 2015-01-13 05:06:20 +00:00
cxx-namespace-alias.cpp
cxx-reference.cpp PR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or 2014-02-19 00:13:27 +00:00
cxx-stmt.cpp
cxx-template-argument.cpp PR18793: If we try to EnterTokenStream when our current lexer is a caching 2014-09-23 21:05:52 +00:00
cxx-template-decl.cpp Diagnose function template definitions inside functions 2014-12-15 23:16:32 +00:00
cxx-throw.cpp
cxx-typeid.cpp
cxx-typeof.cpp
cxx-undeclared-identifier.cpp
cxx-using-declaration.cpp Replace "can not" with "cannot" in diagnostics messages. 2014-03-07 22:36:23 +00:00
cxx-using-directive.cpp Allow CorrectTypo to replace CXXScopeSpecifiers that refer to classes. 2013-10-19 00:05:00 +00:00
cxx-variadic-func.cpp Revert "Improve declaration / expression disambiguation around ptr-operators, and use" 2015-02-23 22:36:28 +00:00
cxx0x-ambig.cpp If a function decl cannot be merged, mark it as invalid. 2015-01-17 02:33:17 +00:00
cxx0x-attributes.cpp [parse] Don't crash on alternative operator spellings from macros in c++11 attributes. 2015-03-29 19:25:07 +00:00
cxx0x-condition.cpp
cxx0x-decl.cpp Fix crash-on-invalid: don't look ahead past an unknown token, it might be EOF. 2015-07-21 00:23:34 +00:00
cxx0x-for-range.cpp Revised wording for diagnostics in r208299 2014-05-09 09:49:29 +00:00
cxx0x-in-cxx98.cpp PR21367: Don't accept rvalue references as an extension in C++98 mode if we're in a new-type-id or conversion-type-id, since those things can legitimately be followed by a binary && operator. 2014-10-28 16:55:02 +00:00
cxx0x-lambda-expressions.cpp Add a warning for direct-list-initialization of a variable with a deduced type 2015-02-11 02:41:33 +00:00
cxx0x-literal-operators.cpp
cxx0x-member-initializers.cpp PR19993: don't assert/crash if a static data member is initialized by '= delete;'. 2014-06-11 00:49:52 +00:00
cxx0x-override-control-keywords.cpp Remove obsolete FIXME. override on definitions is fine. 2015-03-03 03:31:15 +00:00
cxx0x-rvalue-reference.cpp PR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or 2014-02-19 00:13:27 +00:00
cxx1z-attributes.cpp Missing testcase from r221581. 2014-11-08 17:09:50 +00:00
cxx1z-fold-expressions.cpp [c++1z] N4295: fold-expressions. 2014-11-08 05:07:16 +00:00
cxx1z-nested-namespace-definition.cpp [c++1z] Implement nested-namespace-definitions. 2014-11-08 05:37:34 +00:00
cxx11-base-spec-attributes.cpp
cxx11-brace-initializers.cpp
cxx11-stmt-attributes.cpp Diagnose C++11 attributes before fp_contract pragmas. 2013-11-15 21:10:54 +00:00
cxx11-templates.cpp Reject varargs '...' in function prototype if there are more parameters after 2014-08-11 23:30:23 +00:00
cxx11-type-specifier.cpp Replace "can not" with "cannot" in diagnostics messages. 2014-03-07 22:36:23 +00:00
cxx11-user-defined-literals.cpp Preprocessor: support defined() with operator names for MS compatibility 2014-05-21 06:13:51 +00:00
debugger-import-module.m Added a testcase to make sure the parser allows 2014-12-10 18:57:09 +00:00
declarators.c revert patch r216469. 2014-08-26 21:10:47 +00:00
designator.c
diag-crash.c Fix crash when both ExpectAndConsume and ConsumeAnyToken emit diagnostics 2014-02-23 03:45:03 +00:00
empty-translation-unit.c
encode.m
enhanced-proto-1.m
eof.cpp Fix PR 19630, don't crash when file ends with whitespace. 2014-05-02 23:40:32 +00:00
eof2.cpp Parse: Don't crash on trailing whitespace before EOF 2014-07-26 05:41:31 +00:00
expressions.c Continue parsing an expression list even after an error is encountered. 2014-07-14 22:48:10 +00:00
expressions.m
extension.c
extra-semi.cpp Add a new error for unexpected semi-colon before closing delimiter. 2015-05-12 21:36:35 +00:00
for.cpp
function-decls.c
goto.c
if-scope-c90.c
if-scope-c99.c
implicit-casts.c
knr_parameter_attributes.c
method-def-in-class.m
method-prototype-1.m
missing-closing-rbrace.m Do the error recovery for @end only. 2013-03-20 18:45:49 +00:00
missing-end-2.m
missing-end-3.m
missing-end-4.m Revert my patch in r191155 to allow forward 2013-09-24 17:03:07 +00:00
missing-end.m
missing-selector-name.mm
ms-if-exists.c Fix crash when using __if_exists in C mode 2014-11-24 17:29:35 +00:00
ms-if-exists.cpp Fix parsing nested __if_exists blocks 2014-06-25 00:28:35 +00:00
ms-inline-asm-nested-braces.c Add support for nested blocks in Microsoft inline assembly 2014-07-06 05:26:54 +00:00
ms-inline-asm.c Adding option -fno-inline-asm to disallow inline asm 2015-01-16 23:05:28 +00:00
ms-seh.c Don't crash on missing '{' after __except or __finally, PR22687. 2015-02-25 02:22:06 +00:00
namelookup-bug-1.c
namelookup-bug-2.c
namespace-alias-attr.cpp Parse: __attribute__((keyword)) shouldn't error 2015-01-03 19:41:00 +00:00
namespaces.cpp Parse: Don't crash when namespace is in GNU statement expr 2015-01-09 09:38:14 +00:00
no-gnu-inline-asm.c Allow empty assembly string literal with -fno-gnu-inline-asm 2015-05-12 00:16:37 +00:00
nullability.c Fix a test case broken by my previous commit. 2015-06-29 18:15:31 +00:00
objc-alias-printing.m
objc-boxing.m Objective-C parsing [qoi]: Provide good recovery when 2013-04-18 19:37:43 +00:00
objc-category-neg-1.m
objc-diag-width.mm Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
objc-error-qualified-implementation.m Parsing, semantic analysis, and AST for Objective-C type parameters. 2015-07-07 03:57:15 +00:00
objc-forcollection-1.m
objc-forcollection-neg-2.m
objc-forcollection-neg.m
objc-foreach-syntax.m
objc-init.m
objc-interfaces.m
objc-messaging-1.m
objc-messaging-neg-1.m
objc-missing-impl.m
objc-property-syntax.m
objc-quirks.m
objc-recover.mm
objc-synthesized-recover.m
objc-try-catch-1.m
objc-type-printing.m
objcbridge-related-attribute.m ObjectiveC - Introducing objc_bridge_related attribute 2013-12-04 20:32:50 +00:00
objcxx-at.mm
objcxx-lambda-expressions-neg.mm
objcxx0x-lambda-expressions.mm Fix the end location of init-capture annotations in ObjC++ 2015-04-30 18:40:23 +00:00
objcxx11-attributes.mm Adding the Subjects entry back for the noreturn attributes. This caused some test cases to be updated because the original diagnostic was about applying to methods as well as functions, but the semantic checking disallowed methods. 2013-11-27 18:53:58 +00:00
objcxx11-initialized-temps.mm Objective-C++: Enable passing of modern C++11 style 2013-04-18 23:43:21 +00:00
objcxx11-protocol-in-template.mm Handle Objective-C type arguments. 2015-07-07 03:57:35 +00:00
objcxx11-user-defined-literal.mm
offsetof.c
opencl-astype.cl Print detailed vector type information on diagnostics. 2014-04-25 20:41:38 +00:00
opencl-atomics-cl20.cl Appease clang/test/Parser/opencl-atomics-cl20.cl for 32-bit targets with explicit triple. 2015-03-18 15:07:54 +00:00
opencl-cl20.cl [OpenCL] Generic address space parsing and diagnostics test (forgotten previously) 2014-11-26 14:14:05 +00:00
opencl-image-access.cl
opencl-kernel.cl
opencl-keywords.cl Fix a typo in r204164 that made *all* keywords available in OpenCL mode. 2014-03-18 22:43:19 +00:00
opencl-pragma.cl
opencl-storage-class.cl
parenthesis-balance.cpp
parmvardecl_conversion.c
parser_overflow.c Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
placeholder-recovery.m C++ support for Objective-C lightweight generics. 2015-07-07 03:58:14 +00:00
pointer-arithmetic.c
pointer_promotion.c
pragma-fp-contract.c Fix bogus diagnostic wording. There's no such thing as a compound expression. 2013-11-15 21:08:45 +00:00
pragma-loop-safety.cpp Add new llvm.loop.unroll.enable metadata for use with "#pragma unroll". 2015-08-10 17:29:39 +00:00
pragma-loop.cpp Add new llvm.loop.unroll.enable metadata for use with "#pragma unroll". 2015-08-10 17:29:39 +00:00
pragma-optimize-diagnostics.cpp Implemented support for "pragma clang optimize on/off", based on attribute 'optnone'. 2014-05-23 12:13:25 +00:00
pragma-options.c [Parser] Handle #pragma pack/align inside C structs. 2013-04-18 01:42:35 +00:00
pragma-options.cpp
pragma-pack.c [Parser] Handle #pragma pack/align inside C structs. 2013-04-18 01:42:35 +00:00
pragma-unroll.cpp Add new llvm.loop.unroll.enable metadata for use with "#pragma unroll". 2015-08-10 17:29:39 +00:00
pragma-visibility.c
pragma-visibility2.c
pragma-weak.c Fix a parser crash when there are #pragmas in a context which requires a single 2013-10-28 22:04:30 +00:00
promote_types_in_proto.c
recovery.c
recovery.cpp Revert "Improve declaration / expression disambiguation around ptr-operators, and use" 2015-02-23 22:36:28 +00:00
recovery.m
recursion-limits.cpp
selector-1.m
skip-function-bodies.mm
statements.c
struct-recursion.c
switch-recovery.cpp Sema: Don't leave switch stack inconsistent when recovering 2014-12-15 07:46:12 +00:00
top-level-semi-cxx0x.cpp
traditional_arg_scope.c
typeof.c
types.c
vsx.c [PowerPC] Initial VSX intrinsic support, with min/max for vector double 2014-10-31 19:19:24 +00:00
warn-cuda-compat.cu Add support for '#pragma unroll'. 2014-07-21 18:08:34 +00:00
warn-dangling-else.cpp
warn-semicolon-before-method-body.m Fix a tranche of comment, test and doc typos 2013-12-05 16:25:25 +00:00