77e0a97acf
The nvptx port can't support exceptions using sjlj, because ptx does not support sjlj. However, default_except_unwind_info still returns UI_SJLJ, even even if we configure with --disable-sjlj-exceptions, because UI_SJLJ is the fallback option. The reason default_except_unwind_info doesn't return UI_DWARF2 is because DWARF2_UNWIND_INFO is not defined in defaults.h, because INCOMING_RETURN_ADDR_RTX is not defined, because there's no ptx equivalent. Testcase libgomp.c++/for-15.C currently doesn't compile unless fno-exceptions is added because: - it tries to generate sjlj exception handling code, and - it tries to generate exception tables using label-addressed .byte sequence. Ptx doesn't support generating random data at a label, nor being able to load/write data relative to a label. This patch fixes the first problem by using UI_TARGET for nvptx. The second problem is worked around by generating all .byte sequences commented out. It would be better to have a narrower workaround, and define TARGET_ASM_BYTE_OP to "error: .byte unsupported " or some such. This patch does not enable exceptions for nvptx, it merely allows c++ programs to run correctly if they do no use exception handling. Build and reg-tested on x86_64 with nvptx accelerator. 2018-08-02 Tom de Vries <tdevries@suse.de> PR target/86660 * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): New function. Return UI_TARGET unconditionally. (TARGET_EXCEPT_UNWIND_INFO): Redefine to nvptx_except_unwind_info. * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Emit commented out '.byte'. * testsuite/libgomp.oacc-c++/routine-1-auto.C: Remove -fno-exceptions. * testsuite/libgomp.oacc-c++/routine-1-template-auto.C: Same. * testsuite/libgomp.oacc-c++/routine-1-template-trailing-return-type.C: Same. * testsuite/libgomp.oacc-c++/routine-1-template.C: Same. * testsuite/libgomp.oacc-c++/routine-1-trailing-return-type.C: Same. * testsuite/libgomp.oacc-c-c++-common/routine-1.c: Same. From-SVN: r263265 |
||
---|---|---|
.. | ||
abort-1.c | ||
abort-2.c | ||
abort-3.c | ||
abort-4.c | ||
abort-5.c | ||
acc_on_device-1.c | ||
acc-on-device-2.c | ||
acc-on-device.c | ||
asyncwait-1.c | ||
atomic_capture-1.c | ||
atomic_capture-2.c | ||
atomic_rw-1.c | ||
atomic_update-1.c | ||
broadcast-1.c | ||
cache-1.c | ||
clauses-1.c | ||
clauses-2.c | ||
collapse-1.c | ||
collapse-2.c | ||
collapse-3.c | ||
collapse-4.c | ||
combined-directives-1.c | ||
combined-reduction.c | ||
context-1.c | ||
context-2.c | ||
context-3.c | ||
context-4.c | ||
crash-1.c | ||
data-1.c | ||
data-2-lib.c | ||
data-2.c | ||
data-3.c | ||
data-already-1.c | ||
data-already-2.c | ||
data-already-3.c | ||
data-already-4.c | ||
data-already-5.c | ||
data-already-6.c | ||
data-already-7.c | ||
data-already-8.c | ||
data-clauses-kernels-ipa-pta.c | ||
data-clauses-kernels.c | ||
data-clauses-parallel-ipa-pta.c | ||
data-clauses-parallel.c | ||
data-clauses.h | ||
declare-1.c | ||
declare-2.c | ||
declare-3.c | ||
declare-4.c | ||
declare-5.c | ||
declare-vla.c | ||
default-1.c | ||
deviceptr-1.c | ||
enter_exit-lib.c | ||
enter-data.c | ||
f-asyncwait-1.c | ||
f-asyncwait-2.c | ||
f-asyncwait-3.c | ||
firstprivate-1.c | ||
gang-static-1.c | ||
gang-static-2.c | ||
gomp-debug-env.c | ||
host_data-1.c | ||
host_data-2.c | ||
host_data-4.c | ||
host_data-5.c | ||
if-1.c | ||
kernels-alias-ipa-pta-2.c | ||
kernels-alias-ipa-pta-3.c | ||
kernels-alias-ipa-pta.c | ||
kernels-empty.c | ||
kernels-loop-2.c | ||
kernels-loop-3.c | ||
kernels-loop-and-seq-2.c | ||
kernels-loop-and-seq-3.c | ||
kernels-loop-and-seq-4.c | ||
kernels-loop-and-seq-5.c | ||
kernels-loop-and-seq-6.c | ||
kernels-loop-and-seq.c | ||
kernels-loop-clauses.c | ||
kernels-loop-collapse.c | ||
kernels-loop-data-2.c | ||
kernels-loop-data-enter-exit-2.c | ||
kernels-loop-data-enter-exit.c | ||
kernels-loop-data-update.c | ||
kernels-loop-data.c | ||
kernels-loop-g.c | ||
kernels-loop-mod-not-zero.c | ||
kernels-loop-n.c | ||
kernels-loop-nest.c | ||
kernels-loop.c | ||
kernels-parallel-loop-data-enter-exit.c | ||
kernels-private-vars-local-worker-1.c | ||
kernels-private-vars-local-worker-2.c | ||
kernels-private-vars-local-worker-3.c | ||
kernels-private-vars-local-worker-4.c | ||
kernels-private-vars-local-worker-5.c | ||
kernels-private-vars-loop-gang-1.c | ||
kernels-private-vars-loop-gang-2.c | ||
kernels-private-vars-loop-gang-3.c | ||
kernels-private-vars-loop-gang-4.c | ||
kernels-private-vars-loop-gang-5.c | ||
kernels-private-vars-loop-gang-6.c | ||
kernels-private-vars-loop-vector-1.c | ||
kernels-private-vars-loop-vector-2.c | ||
kernels-private-vars-loop-worker-1.c | ||
kernels-private-vars-loop-worker-2.c | ||
kernels-private-vars-loop-worker-3.c | ||
kernels-private-vars-loop-worker-4.c | ||
kernels-private-vars-loop-worker-5.c | ||
kernels-private-vars-loop-worker-6.c | ||
kernels-private-vars-loop-worker-7.c | ||
kernels-reduction-1.c | ||
kernels-reduction.c | ||
lib-1.c | ||
lib-2.c | ||
lib-3.c | ||
lib-4.c | ||
lib-5.c | ||
lib-6.c | ||
lib-7.c | ||
lib-8.c | ||
lib-9.c | ||
lib-10.c | ||
lib-11.c | ||
lib-12.c | ||
lib-13.c | ||
lib-14.c | ||
lib-15.c | ||
lib-16.c | ||
lib-17.c | ||
lib-18.c | ||
lib-19.c | ||
lib-20.c | ||
lib-21.c | ||
lib-22.c | ||
lib-23.c | ||
lib-24.c | ||
lib-25.c | ||
lib-26.c | ||
lib-27.c | ||
lib-28.c | ||
lib-29.c | ||
lib-30.c | ||
lib-31.c | ||
lib-32.c | ||
lib-33.c | ||
lib-34.c | ||
lib-35.c | ||
lib-36.c | ||
lib-37.c | ||
lib-39.c | ||
lib-40.c | ||
lib-41.c | ||
lib-42.c | ||
lib-43.c | ||
lib-44.c | ||
lib-45.c | ||
lib-46.c | ||
lib-47.c | ||
lib-48.c | ||
lib-49.c | ||
lib-50.c | ||
lib-51.c | ||
lib-52.c | ||
lib-53.c | ||
lib-54.c | ||
lib-55.c | ||
lib-56.c | ||
lib-57.c | ||
lib-58.c | ||
lib-59.c | ||
lib-60.c | ||
lib-61.c | ||
lib-62.c | ||
lib-63.c | ||
lib-64.c | ||
lib-65.c | ||
lib-66.c | ||
lib-67.c | ||
lib-68.c | ||
lib-69.c | ||
lib-70.c | ||
lib-71.c | ||
lib-72.c | ||
lib-73.c | ||
lib-74.c | ||
lib-75.c | ||
lib-76.c | ||
lib-77.c | ||
lib-78.c | ||
lib-79.c | ||
lib-80.c | ||
lib-81.c | ||
lib-82.c | ||
lib-83.c | ||
lib-84.c | ||
lib-85.c | ||
lib-86.c | ||
lib-87.c | ||
lib-88.c | ||
lib-89.c | ||
lib-90.c | ||
lib-91.c | ||
lib-92.c | ||
loop-auto-1.c | ||
loop-default-runtime.c | ||
loop-default.h | ||
loop-dim-default.c | ||
loop-g-1.c | ||
loop-g-2.c | ||
loop-gwv-1.c | ||
loop-red-g-1.c | ||
loop-red-gwv-1.c | ||
loop-red-v-1.c | ||
loop-red-v-2.c | ||
loop-red-w-1.c | ||
loop-red-w-2.c | ||
loop-red-wv-1.c | ||
loop-v-1.c | ||
loop-w-1.c | ||
loop-wv-1.c | ||
mapping-1.c | ||
mode-transitions.c | ||
nested-1.c | ||
nested-2.c | ||
offset-1.c | ||
par-loop-comb-reduction-1.c | ||
par-loop-comb-reduction-2.c | ||
par-loop-comb-reduction-3.c | ||
par-loop-comb-reduction-4.c | ||
par-reduction-1.c | ||
par-reduction-2.c | ||
parallel-dims.c | ||
parallel-empty.c | ||
parallel-loop-1.c | ||
parallel-loop-1.h | ||
parallel-loop-2.h | ||
parallel-reduction.c | ||
pointer-align-1.c | ||
pr70289.c | ||
pr70373.c | ||
pr70688.c | ||
pr83046.c | ||
pr83589.c | ||
pr83920.c | ||
pr84217.c | ||
pr84955.c | ||
pr85422.c | ||
pr85782.c | ||
present-1.c | ||
present-2.c | ||
private-variables.c | ||
reduction-1.c | ||
reduction-2.c | ||
reduction-3.c | ||
reduction-4.c | ||
reduction-5.c | ||
reduction-6.c | ||
reduction-7.c | ||
reduction-8.c | ||
reduction-cplx-dbl.c | ||
reduction-cplx-flt.c | ||
reduction-dbl.c | ||
reduction-flt.c | ||
reduction-initial-1.c | ||
reduction.h | ||
routine-1.c | ||
routine-4.c | ||
routine-g-1.c | ||
routine-gwv-1.c | ||
routine-v-1.c | ||
routine-w-1.c | ||
routine-wv-1.c | ||
routine-wv-2.c | ||
subr.h | ||
subr.ptx | ||
switch-conversion-2.c | ||
switch-conversion.c | ||
tile-1.c | ||
timer.h | ||
update-1.c | ||
vector-loop.c | ||
vector-type-1.c | ||
vprop-2.c | ||
vprop.c | ||
zero_length_subarrays.c |