Creating release candidate rc5 from release_800 branch

llvm-svn: 355910
Merging r355743:
------------------------------------------------------------------------
r355743 | ericwf | 2019-03-08 23:06:48 +0100 (Fri, 08 Mar 2019) | 26 lines

[8.0 Regression] Fix handling of `__builtin_constant_p` inside template arguments, enumerators, case statements, and the enable_if attribute.

Summary:
The following code is accepted by Clang 7 and prior but rejected by the upcoming 8 release and in trunk [1]

```
// error {{never produces a constant expression}}
void foo(const char* s) __attribute__((enable_if(__builtin_constant_p(*s) == false, "trap"))) {}
void test() { foo("abc"); }
```

Prior to Clang 8, the call to `__builtin_constant_p` was a constant expression returning false. Currently, it's not a valid constant expression.

The bug is caused because we failed to set `InConstantContext` when attempting to evaluate unevaluated constant expressions.

[1]  https://godbolt.org/z/ksAjmq

Reviewers: rsmith, hans, sbenza

Reviewed By: rsmith

Subscribers: kristina, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D59038
------------------------------------------------------------------------

llvm-svn: 355898
3 files changed
tree: 32ae5b88a1341a6d0fa920bffe0f8dcd1d7f65d4
  1. .arcconfig
  2. README.md
  3. clang-tools-extra/
  4. clang/
  5. compiler-rt/
  6. debuginfo-tests/
  7. libclc/
  8. libcxx/
  9. libcxxabi/
  10. libunwind/
  11. lld/
  12. lldb/
  13. llgo/
  14. llvm/
  15. openmp/
  16. parallel-libs/
  17. polly/
  18. pstl/
README.md

The LLVM Compiler Infrastructure

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.