summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-09-04 05:53:02 +0000
committerDouglas Gregor <dgregor@apple.com>2009-09-04 05:53:02 +0000
commit119b0c7185e12a183d9ad4610d602fa95a98f10d (patch)
tree8a78b548df66b12e150cc7dfe7b33bcec510f621 /clang/lib/CodeGen/CodeGenModule.cpp
parent30e30587ebe0f985d4b46ab1123f8d68044004e1 (diff)
downloadbcm5719-llvm-119b0c7185e12a183d9ad4610d602fa95a98f10d.tar.gz
bcm5719-llvm-119b0c7185e12a183d9ad4610d602fa95a98f10d.zip
Introduce an egregious hack to fix PR4828.
The problem this change addresses is that we treat __is_pod and __is_empty as keywords in C++, because they are built-in type traits in GCC >= 4.3. However, GNU libstdc++ 4.2 (and possibly earlier versions) define implementation-detail struct templates named __is_pod and __is_empty. This commit solves the problem by recognizing struct __is_pod and struct __is_empty as special token sequences. When one of these token sequences is encountered, the keyword (__is_pod or __is_empty) is implicitly downgraded to an identifier so that parsing can continue. This is an egregious hack, but it has the virtue of "just working" whether someone is using libstdc++ 4.2 or not, without the need for special flags. llvm-svn: 80988
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud