[PATCH][committed] Fix ICE in maybe_record_trace_start
Tom de Vries
Tom_deVries@mentor.com
Thu Feb 22 11:00:00 GMT 2018
On 02/12/2018 07:32 PM, Jeff Law wrote:
> diff --git a/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c b/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
> new file mode 100644
> index 00000000000..0ca0b9f034b
> --- /dev/null
> +++ b/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
> @@ -0,0 +1,36 @@
> +int foo;
> +typedef long unsigned int size_t;
> +typedef short unsigned int wchar_t;
> +struct tm
> +{
> + int tm_mday;
> + int tm_mon;
> + int tm_year;
> +};
> +size_t
> +__strftime (wchar_t * s, size_t maxsize, const wchar_t * format, const struct tm *tim_p)
> +{
> + size_t count = 0;
> + int len = 0;
> + size_t i, ctloclen;
> + unsigned long width;
> + {
> + if (foo)
> + {
> + {
> + wchar_t *fmt = L"%s%.*d";
> + len = swprintf (&s[count], maxsize, fmt, "-", width, 0);
> + }
> + if ((count) >= maxsize)
> + return 0;
> + }
> + else
> + {
> + len =
> + swprintf (&s[count], maxsize - count, L"%.2d/%.2d/%.2d", 42, 99, 0);
> + if ((count) >= maxsize)
> + return 0;
> +
> + }
> + }
> +}
Hi,
when compiling this test for nvptx, the missing declaration for swprintf
results in this default declaration in the .s file based on the
arguments of the first call:
...
.extern .func (.param.u32 %value_out) swprintf (.param.u64
%in_ar0, .param.u64 %in_ar1, .param.u64 %in_ar2, .param.u64 %in_ar3,
.param.u64 %in_ar4, .param.u32 %in_ar5);
...
and this error message when ptxas process the second call:
...
ptxas regs-arg-size.o, line 97; error : Type or alignment of argument
does not match formal parameter '%in_ar3'
ptxas regs-arg-size.o, line 97; error : Type or alignment of argument
does not match formal parameter '%in_ar4'
ptxas fatal : Ptx assembly aborted due to errors
nvptx-as: ptxas returned 255 exit status
...
When adding a declaration in the source like so:
...
diff --git a/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
b/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
index 0ca0b9f034b..81943a2c459 100644
--- a/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
+++ b/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
@@ -1,6 +1,7 @@
int foo;
typedef long unsigned int size_t;
typedef short unsigned int wchar_t;
+extern int swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format,
...);
struct tm
{
int tm_mday;
...
the declaration changes to:
...
.extern .func (.param.u32 %value_out) swprintf (.param.u64 %in_ar0,
.param.u64 %in_ar1, .param.u64 %in_ar2, .param.u64 %in_ar3);
...
and test test-case passes.
Is it ok to update the test-case like this, or should it require
effective target 'untyped_assembly' (which is false for nvptx).
Thanks,
- Tom
More information about the Gcc-patches
mailing list