[DebugInfo] FP Constants representation

[AMD Public Use]

Hello Everyone,

I’ve started investigating representation of named FP constants in `DIExpression`. A similar approach has been
tried and deployed in ⚙ D99273 [DebugInfo] Support for signed constants inside DIExpression for named **integer** constants.

I'm trying to represent named FP constants as:

!4 = !DIGlobalVariableExpression(var: !5, expr: (DW_OP_consts, **2.888000e+03**, DW_OP_stack_value))
!5 = distinct !DIGlobalVariable(name: "real_constant",  scope: !2, file: !3, line: 3, type: !9, isLocal: false, isDefinition: true)

Which should materialize in dwarf as:
    DW_TAG_variable 
         DW_AT_name "real_constant")
          DW_AT_type  "const real(kind=4)")
          DW_AT_const_value [DW_FORM_block1]    (<0x04> 00 80 34 45 )

While trying this I got stumbled upon `DIExpression` limitation(Or it could be a design choice also ?). It seems that `DIExpression` only accepts
`uint64_t` as its potential elements thereby leaving no room for things like FP constants to be inside.
Digging in further, I realized that extending `DIExpression` for FP constants is non-trivial/maybe breaking also ?

I need to have your/community thoughts on this approach or some other potential approach :blush:

**NOTE**: Named constants are extensively used in FORTRAN, but having this support should benefit other
potential languages/FE also.

Thanks a lot!
Sourabh.