mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-15 08:32:22 -07:00
initial upload
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
/*
|
||||
** Make sure we have an inlined function
|
||||
*/
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# define FORCE_INLINE __forceinline
|
||||
#elif defined(__clang__)
|
||||
# define FORCE_INLINE __attribute__((always_inline))
|
||||
#else
|
||||
# error need force inline for this compiler
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
// NOTE(allen): Inline Stepping
|
||||
|
||||
extern unsigned int fixed_frac_bits = 5;
|
||||
static unsigned int bias = 7;
|
||||
|
||||
static FORCE_INLINE unsigned int
|
||||
fixed_mul(unsigned int a, unsigned int b){
|
||||
unsigned int c = (((a - bias)*(b - bias)) >> fixed_frac_bits) + bias;
|
||||
return(c);
|
||||
}
|
||||
|
||||
static FORCE_INLINE unsigned int
|
||||
multi_file_inlinesite(unsigned int x){
|
||||
// force compiler to generate annotations for code that's inside another file
|
||||
#include "inline_body.cpp"
|
||||
return x >> fixed_frac_bits;
|
||||
}
|
||||
|
||||
static unsigned int test_value = 0;
|
||||
|
||||
unsigned int
|
||||
inline_stepping_tests(void){
|
||||
bias = 15;
|
||||
|
||||
// NOTE(nick): Interesting that CL does not generate inline site symbols in order of apperance here unlike clang.
|
||||
|
||||
// CL:
|
||||
// BinaryAnnotations: CodeLengthAndCodeOffset d 0
|
||||
// BinaryAnnotation Length: 4 bytes (1 bytes padding)
|
||||
//
|
||||
// Clang:
|
||||
// BinaryAnnotations: LineOffset 1 CodeLength d
|
||||
// BinaryAnnotation Length: 4 bytes (0 bytes padding)
|
||||
unsigned int x = fixed_mul(5001, 7121);
|
||||
|
||||
// CL:
|
||||
// BinaryAnnotations: CodeOffsetAndLineOffset d File 0 CodeOffsetAndLineOffset 22 LineOffset 1e
|
||||
// CodeLengthAndCodeOffset 2 3
|
||||
// BinaryAnnotation Length: 12 bytes (1 bytes padding)
|
||||
//
|
||||
// Clang:
|
||||
// BinaryAnnotations: File 18 LineOffset ffffffe6 CodeOffset d CodeOffsetAndLineOffset 22
|
||||
// File 0 LineOffset 1e CodeOffset 3 CodeLength 2
|
||||
// BinaryAnnotation Length: 16 bytes (0 bytes padding)
|
||||
unsigned int z = multi_file_inlinesite(x);
|
||||
return(z);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user