diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2020-09-12 16:48:58 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2020-09-12 21:34:38 +0200 |
commit | 707e9159ed25d19c174e4da18b194e530878d450 (patch) | |
tree | c28d409b32c482ff55965576c1198b0a1568d3d2 /gcc/d/d-codegen.cc | |
parent | e4011c13c1f8d51f00af61bcb8189bcbe45823b7 (diff) | |
download | gcc-707e9159ed25d19c174e4da18b194e530878d450.zip gcc-707e9159ed25d19c174e4da18b194e530878d450.tar.gz gcc-707e9159ed25d19c174e4da18b194e530878d450.tar.bz2 |
d: Return promoted types in d_type_promotes_to when linkage is not D
This enables warnings to be shown when a bad type is passed to va_arg
inside an extern(C) or extern(C++) function.
gcc/d/ChangeLog:
PR d/97002
* d-codegen.cc (d_build_call): Set input_location on CALL_EXPR.
* d-lang.cc: Include function.h.
(d_type_promotes_to): Do default conversions for C and C++ functions.
* intrinsics.cc (expand_intrinsic_vaarg): Use build1_loc to build
VA_ARG_EXPR.
gcc/testsuite/ChangeLog:
PR d/97002
* gdc.dg/pr97002.d: New test.
Diffstat (limited to 'gcc/d/d-codegen.cc')
-rw-r--r-- | gcc/d/d-codegen.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/d/d-codegen.cc b/gcc/d/d-codegen.cc index 4050b85..1f2d65c 100644 --- a/gcc/d/d-codegen.cc +++ b/gcc/d/d-codegen.cc @@ -2042,6 +2042,7 @@ d_build_call (TypeFunction *tf, tree callable, tree object, } tree result = build_call_vec (TREE_TYPE (ctype), callee, args); + SET_EXPR_LOCATION (result, input_location); /* Enforce left to right evaluation. */ if (tf->linkage == LINKd) |