Comments (2)
It does make sense to drop GCC_UPC from the Clang UPC.
I would also add CLANG_UPC but it was pointed to me that both CLANG_UPC and GCC_UPC are probably not be needed. Definitions of GNUC and UPC has the same meaning as GCC_UPC, and clang can differentiate between GUCP and Clang UPC.
from clang-upc.
I would also add CLANG_UPC but it was pointed to me that both CLANG_UPC and GCC_UPC are probably not be needed.
I disagree since the Berkeley translator can (and will) define __UPC__
and one or both of __GNUC__
and __clang__
. That means __UPC__ && __clang__
is ambiguous (could be BUPC or clang-upc[2c]), and __UPC__ && __GNUC__
can be true for any of the three current translator/compiler choice supported by the upcc driver.
Summary, from the point of view of the guy maintaining UPCR, the test harness and the upcc driver:
- Berkeley translator defines
__UPC__
and__BERKELEY_UPC__
, maybe defines__GNUC__
and/or__clang__
- GUPC defines
__UPC__
,__GUPC__
, and__GCC_UPC__
- Clang-upc2c defines
__UPC__
and__clang__
, maybe defines__GNUC__
The main complication is that depending on the backend compiler in use the Berkeley and upc2c translator cases may define __GNUC__
and the Berkeley translator might also define __clang__
So, the "canonical" ID formulae if one removes __GCC_UPC__
but does not add __CLANG_UPC__
:
- Berkeley:
#if defined(__BERKELEY_UPC__)
- GUPC:
#if defined(_GCC_UPC__)
- clang-upc[2c]:
#if defined(__UPC__) && defined(__clang__) && !defined(__BERKELEY_UPC__)
I am OK with needing defined(__UPC__) && defined(__clang__)
to distinguish clang-upc2c, but really dislike the need for && !defined(__BERKELEY_UPC__)
to avoid confusion in the case of BUPC with CC=clang. On this basis, I would still like to see a definition of __CLANG_UPC__
. However, I am fully prepared to add -D__CLANG_UPC__=1
within the upcc driver if you guys would rather not make it predefined within clang-upc[2c]. Just say so and I'll use that approach and drop my request to see it predefined by clang-upc.
from clang-upc.
Related Issues (20)
- Gasnet testslice fails after 4.0.1 update
- [CG]UPC should not place upc_*.h headers in the include path for UPCR mode
- Build failures with recent clang HOT 2
- apple m1 cargo build failed: LLVM ERROR: Global variable '_ZN12node_runtime1_16SECTION_CONTENTS17h28c19e8d9889aa72E' has an invalid section specifier 'runtime_version': mach-o section specifier requires a segment and section separated by a comma.
- Build errors with gcc 10 HOT 2
- warning on void * - discrad qualifiers HOT 1
- 3.8.0 - build failure on x86_64 HOT 2
- 3.8 - Intrepid's test04 fails to compile with 'struct' configuration HOT 4
- "ld: cannot find -lupc" on OpenBSD HOT 3
- 3.8 update: no link script build fails HOT 1
- 3.8 update: Linking on Mac OS X fails
- 3.8 merge: "ld: cannot find -lupc" on OpenBSD/i386 HOT 1
- 3.8 merge: "ld: cannot find -lupc" on Solaris HOT 1
- Clang-upc ICE on user's example code HOT 3
- MIPS "n32" ABI support HOT 1
- MIPS64 barrier failures HOT 7
- Crash in UPCR's TLD initialization when compiled with clang HOT 5
- 3.9.1 merge - Shared static initialization does not work with optimizations HOT 2
- ppc64 LE - bug3198 gets assertion error in Struct-Debug branch HOT 1
- freebsd 386 - test_int_precision tests fail HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clang-upc.